GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué el tamaño de un directorio siempre es de 4096 bytes en Unix?

Es el tamaño inicial necesario para almacenar los metadatos sobre los archivos contenidos en ese directorio (incluidos los nombres). La asignación inicial es igual al tamaño de un sector, pero puede crecer por encima de eso si es necesario. Una vez asignado, el espacio no se libera si se eliminan los archivos para reducir la fragmentación.

Por ejemplo:

$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/

fuente


A veces, 4096 bytes es la unidad de asignación más pequeña para algunos sistemas de archivos. Por eso el directorio tiene 4096.

Lo mismo se aplica a los archivos. Aunque algunos archivos pueden reportar menos de 4096, en realidad están tomando al menos 4096 de almacenamiento del disco.


4096 está reservado para reducir la fragmentación, porque a menudo el tamaño real de los metadatos contenidos fluctuará según el contenido del directorio. Si crece y se reduce constantemente (digamos que contiene archivos de registro o contenido dinámico), con el tiempo podría afectar el rendimiento. Es probable que esto no suceda con una carpeta, pero en todo el sistema de archivos se agregaría rápidamente.


Linux
  1. ¿Por qué usamos “./” (punto barra oblicua) para ejecutar un archivo en Linux/unix?

  2. Linux:¿por qué el directorio raíz se indica con un signo /?

  3. Linux:¿cómo combinar el árbol con el tamaño del directorio?

  4. ¿Encontrar el tamaño del sector de una partición?

  5. ¿Por qué Ls y Hexdump no están de acuerdo sobre el tamaño del archivo?

Cómo obtener el tamaño de un directorio en Linux

Cómo obtener el tamaño de un directorio en Linux

Cómo encontrar el tamaño de un directorio en Linux

Cómo encontrar el tamaño total de un directorio en Linux

¿Qué comando en el shell sh de Linux/UNIX devuelve mi directorio actual?

¿Por qué se permite incluso el terrible 'rm -rf /'?