Antier me hicieron una pregunta de esas que llaman mucho mi atención, el caso es el siguiente: Un amigo me dijo que porque una carpeta vacía en linux le marcaba que ocupaba un espacio de 64 GB. No quería eliminar esa carpeta hasta estar totalmente seguro de que estuviera vacía.
Al principio creí que se trataba de un error, o que tenía alguna carpeta o archivos ocultos, pero no había tal, efectivamente, usando las herramientas de la terminal una carpeta vacía declara que ocupa espacio en el disco.
El experimento.
Para no arriesgar su instalación hice algunas pruebas en mi equipo, voy a explicar brevemente los comandos que se utilizaron.
Lo primero es crear una carpeta de pruebas
mkdir pruebas
Y luego revisamos el espacio que ocupa
stat pruebas
El espacio de la carpeta es de unos escasos 4 kb, que podemos confirmar con el comando du (disk usage).
Hasta aquí, todo normal, una carpeta vacía solo ocupa el espacio de la declaración de la carpeta.
Pocos archivos grandes
Bueno llegó la hora de crear algunos archivos. Para eso usé un pequeño script que permite generar archivos de texto del tamaño deseado.
Hice un archivo grande de 30 MB y 5 pequeños de 1 MB para tener un total de 35 MB de espacio ocupado en la carpeta. Con el comando ls -lh , podemos ver el total de espacio ocupado y el tamaño de los archivos individuales.
Si repetimos los comandos stat y du veremos que los cambios se reflejan en el espacio ocupado.
El espacio de la carpeta es el mismo, pero su contenido ahora es de 35 MB.
Ahora viene lo interesante, borro todos los archivos de la carpeta con el comando rm y vuelvo a revisar las estadísticas de la carpeta.
Y parece que todo vuelve a la normalidad a la normalidad.
Muchos archivos pequeños
Ahora hacemos el caso contrario, con ayuda de esta instrucción
for i in 'seq 1 10000'; do touch $i; done
Se van a crear 10,000 archivos pequeños y revisamos nuevamente sus estadísticas.
Ahora, esta carpeta con sus 10,000 archivos pequeños ocupa 152 Kb. Y procedemos a borrarlos.
Pero el espacio ocupado por la carpeta me dice que siguen siendo 152 Kb !!!!
Al parecer el truco consiste en el número de archivos, porque una gran cantidad de archivos requiere una mayor cantidad de bloques para guardar la información de la carpeta (se puede ver con el comando stat).
Esta información declarada se puede expander, pero no se contrae, como que reserva ese espacio aunque este disponible. Por eso si ahora creo 100 archivos (en lugar de 10,000) me sigue diciendo que ocupa los 152 Kb anteriores.
Al final, si borro los archivos y posteriormente la carpeta, es posible porque no contiene archivos, de lo contrario me daría un error ya que no es posible borrar una carpeta que no esta vacía.
Conclusiones
¿Entonces que muestra información muestra el comando du?, Muestra una mezcla de dos valores, uno es el espacio ocupado en disco por los archivos y el segundo es el espacio máximo ocupado para mostrar la lista de archivos contenidos en la carpeta (bloques necesarios). El primero se actualiza constantemente, el segundo no y muestra su valor máximo, es por eso que muestra la información de este dato aunque la carpeta este vacía.
Al parecer, este “detallito” esta presente en ext2/ext3/ext4 , pero no estoy seguro que sea lo mismo en otros sistemas de archivos, aunque sería interesante hacer algunas pruebas 🙂
me he dado cuenta que si no borras la papelera los archivos borrados aun salen pesando en la carpeta o unidad.
Eso quiere decir que si vacío la carpeta y luego la papelera, esta regresa a su tamaño mínimo? .. haré la prueba. !!!
rfvera.. no tiene nada que ver, hice el experimento y después de vaciar la papelera, el comando du me sigue marcando el espacio ocupado.
Pero gracias por comentar. 🙂
buuuuuuuuuuuuuuuuuffffffffffff! Una cantidad enorrrrrrrrmeeeeeee!
Así es, por eso el miedo de borrar la carpeta. Por un lado du te dice que ocupa 64 GB, pero por otro lado ls -lha te dice que no hay archivos !!!
¿A quien le haces caso? 🙂
Hmmmmmmmmmmm ¿Y que hay de capetas como la carpeta /root?
Pues si quieres hacer el experimento borrando su contenido y revisando el espacio usado, por mi no te detengas. 🙂
Te imaginas la cantidad de archivos que debió tener mi amigo para que la carpeta declarara un espacio de 64 GB estando vacía !!!.
Curioso tu experimento.