`du` показывает ненулевой размер пустого каталога [duplicate]

У этого вопроса уже есть ответ: du (использование диска) сообщает 6.1M, но каталог пуст 1 answer

Я знаю, что когда я создаю пустой каталог, у него свой размер:

mkdir test && du -h test

дает:

4,0K test

Но этот случай другой. У меня был каталог с файлами 1e6 (74 ГБ) на внешнем жестком диске (ext4). Я обработал эти файлы, сохранил их в другом каталоге и удалил из этого места в параллельном скрипте. Теперь этот каталог должен быть пустым. Итак, это нормально, что

ls -a raw/all

print

. ..

Но

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.

0
задан 21 September 2017 в 11:40

3 ответа

Каталоги в файловых системах 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?
2
ответ дан 22 May 2018 в 18:20

Каталоги в файловых системах 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?
2
ответ дан 18 July 2018 в 06:37

Каталоги в файловых системах 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?
2
ответ дан 24 July 2018 в 18:38

Другие вопросы по тегам:

Похожие вопросы: