du и df на Mac дают разные результаты

748
Ronald S. Bultje

Я пытаюсь выяснить, куда уходит мое HD-пространство. dfговорит мне это:

bash-3.2$ df -h / Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1 148Gi 137Gi 11Gi 93% 35980809 2791381 93% / 

Основная информация здесь верна. Мой диск составляет 160 ГБ в log10 (1000) блоках, что составляет 148 ГБ в log2 (1024) блоках. df -hна Mac возвращает log2 единицы, поэтому информация верна. Итак, 137GB используется в log2 единицах. Куда? Давайте использовать du:

bash-3.2$ sudo du -d 1 -h / Password: 1.0G /.DocumentRevisions-V100 40M /.fseventsd 2.7G /.Spotlight-V100 0B /.Trashes 0B /.vol 33G /Applications 2.3M /bin 0B /cores 0B /Datarescue 4.5K /dev 1.0K /home 15M /Incompatible Software 8.3G /Library 0B /lost+found 1.0K /net 0B /Network 7.3G /opt 15M /Payloads 8.3G /private 1.1M /sbin 6.0G /System 60G /Users 1.1G /usr 4.0K /Volumes 128G / 

du -hтакже использует блоки log2. Итак, вы, вероятно, увидите мою проблему: здесь 9 ГБ отсутствует (на самом деле используется 128 ГБ, но 137 ГБ сообщается как использованные). Как я узнаю, куда это ушло?

(Я вижу, что этот вопрос повторялся несколько раз в прошлом, проблема обычно в том, что люди не запускали du ​​от имени пользователя root, поэтому он не включал некоторые файлы, и об этом сообщалось на stderr - но я явно запускал от имени root, и ошибок о нечитаемых файлах на stderr не было.)

[редактировать]

Чтобы пояснить ответ ниже, я исправил это, используя «sudo gdu --apparent-size -h -d 1 /» вместо «sudo du -d 1 -h /», и теперь он правильно сообщает об использовании 139 ГБ, что достаточно близко к 137/148, как сообщает дф.

0

2 ответа на вопрос

1
Run CMD

Я думаю, что в вашем случае это может быть так же просто, как создаватьdf отчеты в Gibibyte, а du -hотчеты в Gigabyte, если вы не замените -hна --si.

Например

> du -s -h 303G > du -s --si 326G 
df -H (в 1000 блоках) сообщает об использовании 147/158 ГБ, а df -h (в 1024 блоках) сообщает об использовании 137/148 ГБ. Ни один из этих двух не удаленно близок к 128 ГБ, о чем сообщает du, и в 1024 единицах (согласно man du). Ronald S. Bultje 8 лет назад 0
@ RonaldS.Bultje В этом случае вам также следует рассмотреть параметр `du`` --apparent-size`. Run CMD 8 лет назад 1
Ах! Да, это имело большое значение, поэтому на Mac это на самом деле «gdu --apparent-size -h /» (у du такой опции нет), но теперь сумма действительно составляет 139 ГБ. Спасибо! Ronald S. Bultje 8 лет назад 0
0
Mircea

Наткнулся на этот. Я использовал утилиту ncdu в Ubuntu, но вы можете установить ее и на Mac.

https://apple.stackexchange.com/questions/173767/terminal-command-ncdu

Это должно дать вам возможность увидеть как размер, так и видимый размер.

Кроме того, имейте в виду, что могут быть удалены файлы, которые «все еще существуют», то есть вы можете найти их с помощью

lsof | grep deleted

( https://access.redhat.com/solutions/2316 )