Я знаю, что когда я создаю пустой каталог, у него свой размер:
mkdir test && du -h test
дает:
4,0K test
Но этот случай другой. У меня был каталог с файлами 1e6 (74 ГБ) на внешнем жестком диске (ext4). Я обработал эти файлы, сохранил их в другом каталоге и удалил из этого места в параллельном скрипте. Теперь этот каталог должен быть пустым. Итак, это нормально, что
ls -a raw/all
. ..
Но
du -h raw/all
дает
19M raw/all
Без -h у нас ровно 19288B. И это также странный результат:
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 ..
Что происходит? Есть ли кеш в команде du? Или после обработки таких файлов много поколений после этих файлов? Я удалил файл unlink в скрипте perl5.
ls -aiR raw/all
raw/all:
51647758 . 51647760 ..
lsof +L1
печатает 44 строки, но ничего не связано с этим каталогом. Но lsof дает что-то с цифрами вроде 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
Ноутбук был перезагружен. Внешний привод был отключен. Но du все еще показывает 19M.
Каталоги в файловых системах ext4 растут, но не сокращаются. Таким образом, если в какой-то момент он должен был занять 19M для хранения деталей файлов в нем, он сохранит столько места, даже если эти файлы будут удалены. Если вы хотите уменьшить теперь пустой каталог, удалите и заново создайте его:
rmdir foo && mkdir foo
Или, сохраняя разрешения:
mkdir foo2
chown --reference=foo foo2
getfacl foo | setfacl --set-file=- foo2
rmdir foo
mv foo2 foo
Источник:
Unix & amp; Linux: Почему этот пустой каталог 3.5MB?Каталоги в файловых системах ext4 растут, но не сокращаются. Таким образом, если в какой-то момент он должен был занять 19M для хранения деталей файлов в нем, он сохранит столько места, даже если эти файлы будут удалены. Если вы хотите уменьшить теперь пустой каталог, удалите и заново создайте его:
rmdir foo && mkdir foo
Или, сохраняя разрешения:
mkdir foo2
chown --reference=foo foo2
getfacl foo | setfacl --set-file=- foo2
rmdir foo
mv foo2 foo
Источник:
Unix & amp; Linux: Почему этот пустой каталог 3.5MB?Каталоги в файловых системах ext4 растут, но не сокращаются. Таким образом, если в какой-то момент он должен был занять 19M для хранения деталей файлов в нем, он сохранит столько места, даже если эти файлы будут удалены. Если вы хотите уменьшить теперь пустой каталог, удалите и заново создайте его:
rmdir foo && mkdir foo
Или, сохраняя разрешения:
mkdir foo2
chown --reference=foo foo2
getfacl foo | setfacl --set-file=- foo2
rmdir foo
mv foo2 foo
Источник:
Unix & amp; Linux: Почему этот пустой каталог 3.5MB?