¿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 del comando 'ls -l'?

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

Respuesta1

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

Respuesta2

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

Lo que esto st_sizesignifica 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 podrá deducir nada del valor en st_size.

  • En el histórico sistema de archivos UNIX que actualmente suele denominarse v7-fs, los directorios se repetían 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 era significativo con respecto a la read(2)operación y siempre crecía o permanecía como estaba. Las entradas .y ..se crean vinculándolas manualmente con el directorio actual y el de un nivel superior. El recuento de enlaces para un directorio virgen sano y 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 concede como estable, por lo que los comandos del 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 bajo algunas condiciones, pero no siempre cuando se espera 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 WOFSes el primer sistema de archivos de copia en escritura y a que en WOFSlos archivos se informa el directorio en el que se encuentran en lugar de aparecer en el directorio. Si lee un WOFSdirectorio usando readdir(), solo obtendrá datos para las entradas previstas, pero nunca para .y ... El recuento de enlaces de un directorio vacío WOFSes 1 y todo el comportamiento es completamente compatible con POSIX.

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

  • Al igual que ZFS, WAFL copia algunas ideas, pero no todas, de WOFS. Netapp WAFLse escribió 3 años después de la WOFSpublicación del artículo, 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.

Respuesta3

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

Además, 4096 bytes es la unidad de asignación (bloque) predeterminada 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.

El tamaño de los directorios también puede crecer dinámicamente a medida que se llenan, pero una vez lleno, el espacio reservado para los metadatos no se puede reasignar sin eliminar el directorio.

Respuesta4

Un directorio es simplemente un directorio, como un directorio telefónico. Es sólo 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.

información relacionada