¿Cómo mostrar los contenidos que dan lugar a los tamaños que informa `ls -l` para los directorios?

¿Cómo mostrar los contenidos que dan lugar a los tamaños que informa `ls -l` para los directorios?

Entiendo que los tamaños que ls -lreporta paradirectoriosrefleja el espacio que ocupan los "metadatos" de esos directorios. Además, imagino que estos metadatos existen en forma binaria/no legible por humanos.

¿Existe un comando de Unix para mostrar estos metadatos en formato legible por humanos?

EDITAR: si la respuesta a la pregunta anterior depende en gran medida del sistema de archivos, ¿qué palabras clave debo usar para buscar la respuesta para un sistema de archivos en particular? (Estoy interesado en la respuesta para muchos tipos de sistemas de archivos, incluidos nfs, ext3, ext4, vfat, gpfs, tmpfs y lustre). Cuando busco, por ejemplo, "cómo mostrar datos/información/contenidos del directorio", etc. sólo encuentro información sobre cómo enumerar los archivos en un directorio, que no es exactamente lo que estoy buscando.

Respuesta1

lsmuestra esa información porque los datos se almacenan en el sizecampo del inodo del directorio. Esto depende del sistema de archivos. Un sistema de archivos determinado podría contener otra información allí. Como ejemplo, ZFS informa la cantidad de entradas de directorio en ese campo.

Si ese es el nivel que le interesa, entonces leer los datos es sencillo. lsy statson herramientas para mostrar la información del inodo de diferentes maneras. Puede examinarlos para ver cómo extraer los datos y mostrarlos en un formato legible por humanos. Echa un vistazo aestadística(2)para que la llamada al sistema consulte la información.

Si solo desea recopilar ese número directamente, considerestat -c "%s"

% ls -ld /
drwxr-xr-x 44 root root 4096 Jun 10 17:11 /
% stat -c "%s" /
4096

Respuesta2

Sí, lo hay: se llama ls...

El tamaño informado por lspara un directorio es el tamaño del contenido del directorio. No son metadatos del directorio, son metadatos de los archivos en el directorio. La mayor parte está listada con ls -la.

En algunas variantes de Unix, puede mostrar la forma binaria de esos datos llamando a cat(o od, etc.) en el directorio. Este no es el caso en Linux, y en los sistemas donde es posible, la interpretación de esos datos puede depender del tipo de sistema de archivos o puede estar normalizada (para que sea compatible con los tipos de sistemas de archivos históricos). Ver¿Cuándo dejaron de ser legibles los directorios como archivos?yvolcado octal de directorio

El tamaño informado por lses mayor de lo que se necesita para almacenar los datos que ve lspor varias razones:

  • Es posible que haya metadatos que lsno se muestren, como listas de bloqueo para el contenido del archivo.
  • Puede haber relleno, por ejemplo, bits no utilizados aquí y allá, alineación con los límites de las palabras de la máquina, nombres de archivos almacenados en campos de tamaño fijo, etc.
  • Hay metadatos para organizar la lista de nombres de archivos, por ejemplo, un árbol B o una estructura de árbol de búsqueda.
  • Normalmente, los archivos se organizan en bloques y un archivo utiliza un número entero de bloques, y el último bloque se llena solo parcialmente, a menos que el tamaño del archivo sea exactamente un múltiplo del tamaño del bloque.
  • En algunos sistemas de archivos, como ext4, los directorios no devuelven bloques no utilizados después de que han crecido mucho (porque contenían muchos archivos) y luego se han reducido mucho (porque se eliminaron muchos archivos).

Si desea obtener información sobre cosas que lsno se muestran, debe ir y mirar directamente el contenido del directorio. Ejecute odo similar en el directorio, si su variante de Unix lo permite, o use una herramienta de bajo nivel como un visor hexadecimal en la partición o un depurador del sistema de archivos comodebugfspara ext2/ext3/ext4. La información que verá de esta manera no califica como “legible por humanos”, excepto para las pocas personas que están íntimamente familiarizadas con el formato del sistema de archivos.

información relacionada