El tamaño de los directorios no vale nuestros esfuerzos

Este es un pequeño post curioso, completamente innecesario en la práctica, pero divertido, sobre directorios en sistemas *nix. Es viernes, después de todo.

A menudo surgen preguntas aburridas sobre inodos en las entrevistas, sobre todo-es-un-archivo, a las que pocos pueden responder de manera coherente. Pero si indagas un poco más, puedes encontrar cosas interesantes.

Para entender el post, un par de puntos clave:

  • todo es un archivo. un directorio también es un archivo.
  • en el inodo se almacenan los metadatos del archivo, pero el nombre del archivo no se almacena allí.
  • el nombre del archivo se almacena en los datos del directorio.
  • el tamaño del directorio, que se muestra en ls y que por defecto es de 4KB, depende de la cantidad de archivos en el directorio y de la longitud de sus nombres.
  • obviamente, cuanto más archivos haya, mayor será el tamaño del directorio.

Y ahora algo interesante: creamos un directorio con un millón de archivos, comprobamos el tamaño del directorio y luego borramos todos los archivos y observamos el tamaño del directorio.

$ mkdir niceDir && cd niceDir
# dependiendo de la velocidad del soporte, el siguiente comando puede tardar entre 2 y 10 minutos.
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M 2 de Ago 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M  2 de Ago 13:37 .

Como puedes notar, el tamaño del directorio no cambió, aunque parecería que sí 🙂.

Reparar el tamaño del directorio (sin eliminar) solo se puede hacer con fsck (y la opción -D) en estado desmontado.

Y cuando fui a investigar por qué era así, descubrí que hace 10 años ya había un comportamiento similar discutimos en lkml. Y según los desarrolladores, la corrección simplemente no merece el esfuerzo adicional.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster