`du` muestra un tamaño distinto de cero de un catálogo vacío

`du` muestra un tamaño distinto de cero de un catálogo vacío

Sé que cuando creo un catálogo vacío tiene su propio tamaño:

mkdir test && du -h test

da:

4,0K    test

Pero este caso es otro. Tenía un catálogo con archivos 1e6 (74 GB) en un disco duro externo (ext4). Procesé estos archivos, los guardé en otro catálogo y los eliminé de esta ubicación en un script paralelizado. Ahora este catálogo debería estar vacío. Entonces está bien que

ls -a raw/all

imprimir

.  ..

Pero

du -h raw/all

da

19M     raw/all

Sin -htenemos exactamente 19288B. Y este también es un resultado extraño:

ls -la raw/all

total 19292
drwxr-xr-x 2 daniel daniel 19746816 wrz 18 19:23 .
drwxrwxr-x 4 daniel daniel     4096 wrz 17 13:21 .. 

¿Qué está pasando? ¿Hay algún caché al dumando? ¿O después de procesar tantos archivos hay algún resto después de estos archivos? Eliminé el archivo archivado unlinken el script perl5.

Actualización: respuestas a preguntas de comentarios

ls -aiR raw/all
raw/all:
51647758 .  51647760 ..

lsof +L1 

imprime 44 líneas pero nada relacionado con este catálogo. Pero lsofda algo con números como 19746816.

lsof | grep raw
bash      5355                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all
lsof      5677                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all
grep      5678                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all
lsof      5679                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all

Se reinició la computadora portátil. La unidad externa estaba desconectada. Pero dutodavía se nota 19M.

Respuesta1

Los directorios en los sistemas de archivos ext4 crecen, pero no se reducen. Por lo tanto, si en algún momento tuvo que ocupar 19 M para almacenar detalles de archivos, conservará esa cantidad de espacio incluso si esos archivos se eliminaron. Si desea reducir un directorio ahora vacío, elimínelo y vuelva a crearlo:

rmdir foo && mkdir foo

O bien, conservando permisos:

mkdir foo2
chown --reference=foo foo2
getfacl foo | setfacl --set-file=- foo2
rmdir foo
mv foo2 foo

Fuente:

información relacionada