it-swarm-es.tech

¿Qué significa el tamaño de un directorio en la salida del comando 'ls -l'?

¿Qué significa el tamaño de un directorio en la salida de ls -l comando?

67
Hemant

Este es el tamaño del espacio en el disco que se utiliza para almacenar la metainformación para el directorio (es decir, la tabla de archivos que pertenecen a este directorio). Si es 1024, esto significa que se usan 1024 bytes en el disco (siempre asigna bloques completos) para este propósito.

46
txwikinger

El "tamaño de un directorio" impreso con ls -l Es (como con cualquier tipo de archivo) el valor informado por la llamada stat() en statbuf.st_size.

Lo que esto st_size Significa para los directorios, depende completamente del tipo de sistema de archivos. A menos que conozca el tipo de sistema de archivos y comprenda sus conceptos, no puede deducir nada del valor en st_size.

  • En el sistema de archivos histórico de UNIX que generalmente se denomina v7-fs, Los directorios se repitieron con entradas de 16 bytes que contenían un número de inodo de 16 bits y 14 bytes de nombre de archivo. El "tamaño" de un directorio fue significativo con respecto a la operación read(2) y siempre creció o permaneció como está. Las entradas . Y .. Se crean al vincularlas manualmente con el nivel actual y el directorio superior. El recuento de enlaces para un directorio virgen cuerdo vacío es 2.

  • En el sistema de archivos BSD-4.2 que desde 1989 (SVr4) se llama ufs, los directorios son una serie de registros de longitud variable que utilizan un formato que no se garantiza que sea estable, por lo que no se permite leer comandos de espacio de usuario este formato El "tamaño" reportado es el tamaño en bytes como en v7-fs, el tamaño generalmente crece o permanece como está, pero las versiones más nuevas del sistema de archivos pueden reducir el tamaño en algunas condiciones, pero no siempre cuando puede esperar esto. El recuento de enlaces informado para un directorio vacío es 2 como con v7-fs.

  • En WOFS, el sistema de archivos que diseñé e implementé entre el verano de 1988 y mayo de 1991, los directorios siempre informan el "tamaño" 0 y nunca tienen un tipo de contenido que pueda leerse usando la llamada read(2) . Esto se debe a que WOFS es el primer sistema de archivos Copy-on-Write y porque en WOFS los archivos informan el directorio en el que se encuentran en lugar de aparecer en el directorio. Si lee un directorio WOFS usando readdir(), solo obtendrá datos para las entradas previstas, pero nunca para . Y ... El recuento de enlaces de un directorio vacío en WOFS es 1 y todo el comportamiento es completamente compatible con POSIX.

  • En ZFS, eso se implementó después de leer los documentos WOFS. ZFS es un sistema de archivos de copia en escritura y sus autores no niegan que hayan copiado conceptos de WOFS. Los directorios en ZFS informan el number of directory entries En st_size, Por lo que el "tamaño" informado no tiene un significado real con respecto al espacio en disco ocupado de los datos del directorio. No hay entradas . Y .. En un directorio ZFS, pero si llama a readdir(), estas entradas son falsas y devueltas para las dos primeras operaciones. ZFS es el único FS en la lista que no admite directorios de enlace rígido, pero el recuento de enlaces reportado para directorios siempre es 2. Estas dos irregularidades en ZFS se implementan para reducir la confusión en POSIX programas históricos.

  • Similar a ZFS, WAFL copia algunas pero no todas las ideas de WOFS. El WAFL de Netapp se escribió 3 años después de la publicación del artículo WOFS, WAFL es copia en escritura, pero WAFL parece informar valores de "tamaño" que pueden ser el "tamaño real del directorio" la suposición de que el directorio tiene contenido.

14
schily

Un directorio reserva 4096 bytes (como mínimo) para metadatos sobre sí mismo y sus contenidos.

Además, 4096 bytes es la unidad de asignación predeterminada (bloque) para el sistema de archivos ext2/ext3/ext4 y, por lo tanto, un directorio no puede ser más pequeño.

En diferentes sistemas de archivos, puede encontrar directorios con diferentes tamaños predeterminados, debido al tamaño de bloque predeterminado del sistema de archivos.

Los tamaños de directorio también pueden crecer dinámicamente a medida que se llenan, pero una vez que se llena el espacio reservado para metadatos no se puede reasignar sin eliminar el directorio.

13
h3rrmiller

Un directorio es solo un directorio, como un directorio telefónico. Es solo un archivo con una lista de números y un nombre al lado de ellos. Cada número hace referencia a un archivo en el sistema de archivos (un número de inodo) y el nombre es el nombre del archivo.

Necesita espacio en disco para guardar esos datos, la forma en que se asignan, crecen y reducen depende del sistema de archivos.

4