Respuestas:
Este es el tamaño de 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, por ejemplo, 1024, esto significa que se utilizan 1024 bytes en el disco (siempre asigna bloques completos) para este propósito.
El "tamaño de un directorio" impreso con ls -l
es (como con cualquier tipo de archivo) el valor informado por la stat()
llamada 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 histórico sistema de archivos UNIX que generalmente se denomina actualmente 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 read(2)
operación y siempre creció o permaneció como está. Las entradas .
y ..
se crean vinculándolas manualmente con el nivel actual y el directorio superior. El recuento de enlaces para un directorio de soltera vacío sano es 2.
En el sistema de archivos BSD-4.2 que se llama desde 1989 (SVr4) 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 los comandos de espacio de usuario no pueden leer este formato. El "tamaño" informado 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 mediante la read(2)
llamada. Esto se debe a que WOFS
es el primer sistema de archivos Copy-on-Write y porque en los WOFS
archivos se informa el directorio en el que se encuentran en lugar de aparecer en el directorio. Si lee un WOFS
directorio usando readdir()
, solo obtiene datos para las entradas previstas, pero nunca para .
y ..
. El recuento de enlaces de un directorio vacío WOFS
es 1 y todo el comportamiento es completamente compatible con POSIX.
En ZFS
, eso se implementó después de leer los WOFS
periódicos. ZFS
es un sistema de archivos de copia en escritura y sus autores no niegan que copiaron conceptos de WOFS
. Directorios en ZFS reportar el number of directory entries
en st_size
, por lo que la presunta "tamaño" no tiene ningún significado real con respecto al espacio de disco ocupado a partir de los datos del directorio. No hay entradas .
y ..
en un directorio ZFS, pero si llama readdir()
, estas entradas son falsificadas y devueltas para las dos primeras operaciones. ZFS es el único FS de la lista que no admite directorios de enlace rígido, pero el recuento de enlaces informado para directorios siempre es 2. Estas dos irregularidades en ZFS se implementan para reducir la confusión en programas históricos que no son POSIX.
Similar a ZFS, WAFL copia algunas pero no todas las ideas WOFS
. Netapp WAFL
fue escrito 3 años después de la WOFS
publicación del documento, WAFL es copia en escritura, pero WAFL parece informar valores de "tamaño" que pueden ser el "tamaño real del directorio" bajo el supuesto de que el directorio tiene contenido.
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, esto se debe 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.
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.