¿Cómo se almacenan los metadatos del archivo en Windows?

13

(Estoy usando Windows XP pero supongo que es similar en todas las versiones recientes de Windows).

Cuando crea, por ejemplo, un nuevo documento de texto vacío , encontrará en sus propiedades que tiene un tamaño de 0 bytes. Cero bytes significa que no hay información . Sin datos.
Pero aún así, el archivo tiene algún nombre, aún puede llevar las fechas de último acceso, modificación y creación. Lleva la información, ya sea un archivo oculto o no, ya sea de solo lectura o no ...

Entonces, ¿dónde se almacenan todos los metadatos?

Jeyekomon
fuente
No hay magia aquí. Lea estas respuestas aquí: stackoverflow.com/questions/4954991/…
HighTechGeek
Hace mucho tiempo, recuerdo que solía tener un tipo de virus que de alguna manera corrompía un par de archivos en mi PC, por lo que parecían tener un tamaño de aproximadamente 100 GB. Cada uno de ellos. En mi disco duro de 40 GB. Así que debe haber habido algún tipo de magia ... :-D
Jeyekomon
1
Por ejemplo: ntfs.com/ntfs_basics.htm
Koray Tugay

Respuestas:

11

Le han enseñado que los discos duros contienen archivos, pero esa no es toda la verdad. En realidad, los discos duros contienen un número muy, muy grande expresado por muchos bits individuales. Pero esta interpretación no tiene ningún sentido para usted ni para su computadora, porque procesar números grandes individuales no es muy común (y estoy hablando de números REALMENTE ENORMES). En cambio, la computadora lo divide en 'palabras' más pequeñas (8 bits, 16 bits, 32 bits o lo que sea) y las utiliza de esa manera. Aún así, son solo un montón de palabras (supongamos palabras de 8 bits, es decir, bytes).

Ahora, esa unidad está particionada. He explicado por qué la partición es una buena idea en esta respuesta :

En términos generales, las unidades se pueden usar sin particionar. La mayoría de los pendrives funcionan así. Pero usar particiones tiene muchas ventajas, solo por nombrar algunas de ellas:

  • Puede tener dos sistemas operativos ubicados en el mismo disco duro y sin interferir entre sí. Cada uno tratará su partición como una unidad lógica y no se meterá con otras a menos que se lo indique.
  • Puede separar lógicamente sus datos. Si una partición se corrompe por alguna razón, es muy probable que otras particiones permanezcan intactas.
  • Usar particiones es mejor que usar múltiples discos duros más pequeños, porque su sistema es más silencioso, consume menos energía y puede cambiar su tamaño, eliminarlos, moverlos, etc.
  • Puede usar algunas partes del disco duro para algunos fines especiales.

Ahora, cada partición tiene su propio sistema de archivos. Las versiones modernas de Windows usan NTFS , pero FAT , FAT32 y exFAT son compatibles con medios externos o particiones heredadas. Las instalaciones de Linux de uso diario generalmente usan sistemas de archivos ext , siendo ext4 el último.

El sistema de archivos define la forma en que los archivos se ubican físicamente en el disco. Puede pensarlo así: si tuviera un libro de 10000 páginas sin capítulos, números de página o saltos de línea, sería muy difícil de usar. Por supuesto, los números de página y los títulos de los capítulos ocupan algo de espacio en la página, pero hacen que usar el libro sea mucho más fácil y rápido. Si desea saltar al capítulo, digamos, 42, simplemente búsquelo en la tabla de contenido. Luego hojeas el libro hasta encontrar el capítulo que deseas. Sus archivos son capítulos y su sistema de archivos es el libro. Los metadatos del sistema de archivos, como los límites de los archivos, los nombres de los archivos, etc. también ocupan espacio, pero es una cantidad de espacio comparativamente pequeña y hace que las cosas funcionen mucho más rápido.

Si su "capítulo" está vacío, aún puede tener un título o un número de página, ¿verdad? El archivo vacío contiene cero bytes de datos. Los metadatos ocupan espacio, pero no es parte del archivo, sino del sistema de archivos. De lo contrario, ¿vería nombres de archivo dentro de sus archivos de texto?

Por cierto, es por eso que las primeras versiones de DOS aceptaban solo 8.3 nombres: el espacio reservado para los nombres de archivo era muy limitado. NTFS permite nombres de archivo que tienen 255 caracteres de longitud [1] .


Solo una palabra más en tu comentario:

Solía ​​tener un tipo de virus que de alguna manera corrompió un par de archivos en mi PC para que parecieran tener un tamaño de aproximadamente 100 GB. Cada uno de ellos. En mi disco duro de 40 GB. Entonces debe haber habido algún tipo de magia ... :-D

Es completamente posible tener archivos válidos más grandes que su disco duro gracias a una función llamada archivos dispersos . Hennes tiene una excelente explicación de estos en su comentario sobre esta pregunta :

Imagine una carpeta capaz de contener 100 páginas. Si usa esa carpeta como un archivo normal, podría insertar 100 páginas. Podrías leer los 100. Podrías escribir a los 100. Ahora imagina una carpeta escasa. Inserta la primera página que escribe "página 1: Contenido A". Luego inserta una segunda página que escribe "página 9999: contenido b:". Cada vez que intentas leer una página, miras si existe. Si no es así, su respuesta será que esta es una página vacía. Si existe, devuelve el contenido de la página. Cada vez que escribe en una página que aún no existe en la carpeta, agrega una nueva hoja de papel.

gronostaj
fuente
De lo contrario, ¿vería nombres de archivo dentro de sus archivos de texto? Bueno, muchos tipos de archivos ricos como imágenes o archivos PDF pueden contener muchos metadatos. Incluso los archivos de texto codificados UTF-8 simples contienen una secuencia EFBBBF que está oculta por la mayoría de los editores de texto, por lo que esperaba que los metadatos del archivo fueran solo otra parte oculta e inaccesible del archivo. De todos modos, ¡serías un maestro increíble! Cada respuesta dada aquí fue (y será) realmente útil de alguna manera, pero agradezco mucho su esfuerzo.
Jeyekomon
Esto no responde a la pregunta, ¿verdad? Entonces, ¿dónde se almacenan todos los metadatos?
Koray Tugay
@KorayTugay Creo que la pregunta real era "¿Cómo se almacenan los metadatos del archivo en Windows para que no ocupen espacio? ". En mi opinión, la mejor respuesta que puede dar en una publicación de Superusuario es explicar que están almacenados en el sistema de archivos, no directamente en el archivo, y es por eso que no cuentan en el tamaño del archivo. Están en el libro, pero no como parte del texto.
gronostaj
7

Acabo de enterarme hoy sobre los flujos de datos alternativos de Windows (ADS). Esta es una bifurcación de recursos ocultos que se adjunta a un archivo. Ha sido parte de NTFS desde Windows NT 3.1.

Por ejemplo, si tiene un archivo de texto en blanco pero completa parte de la información de resumen en la etiqueta de propiedad del archivo, se crea un archivo ADS oculto y se adjunta al archivo de texto. La mayoría de las versiones de Windows no incluyen el tamaño del archivo ADS al informar el tamaño del archivo original.

Puede crear y ver archivos ADS desde un símbolo del sistema.

echo "ABCDE" > test.txt:hidden.txt

creará un archivo test.txt con un archivo ADS llamado hidden.txt

puedes usar este comando para editar el archivo:

notepad test.txt:hidden.txt

Aquí hay un artículo fácil de leer que entra en más detalles.

HighTechGeek
fuente
Eso es realmente una cosa interesante! De hecho, nunca he oído hablar de eso también ... Gracias.
Jeyekomon
@Jeyekomon parece que 'type' no lo admite, pastebin.com/raw/4Ae3GGkN pero veo echo y notepad do (probado en win7)
barlop
2

Hice una búsqueda y encontré una pregunta similar en Stack Overflow.

Básicamente dice que el archivo está creado y ocupa unos pocos bytes o un clúster de disco duro, etc. Depende de la granularidad del disco duro y del sistema de archivos, etc.

Lo discuten aquí: /programming/4954991/are-0-bytes-files-really-0-bytes

con enlaces adicionales para futuras investigaciones.

HighTechGeek
fuente
2

En un volumen NTFS, esta información se almacena en metarchivos. En particular, el nombre del archivo y las marcas de tiempo se almacenan en un metarchivo llamado $ MFT. Los métodos normales de Windows como Explorer o el símbolo del sistema no pueden acceder a los metarchivos.

Para más lectura:

http://ntfs.com/ntfs-system-files.htm

http://en.wikipedia.org/wiki/NTFS

David Marshall
fuente
Gracias. Entonces, la respuesta radica en una comprensión más profunda del sistema de archivos de mi HDD ... Y solo por curiosidad, ¿conoce algún método de Windows "anormal"? ¿El que es realmente útil para acceder a esos metarchivos? Un par de palabras clave para google sería suficiente ...
Jeyekomon
1
@Jeyekomon Necesitas usar un editor de sector. Aquí hay un ejemplo: blogs.technet.com/b/askcore/archive/2013/03/01/…
David Marshall