3

Я пишу скрипт geektool 3, чтобы показать размер конкретной виртуальной машины VMware Fusion. Такой "файл" .vmwarevm действительно является упакованным каталогом.

Get Info в Finder говорит, что файл "52,91 ГБ". Я запускаю следующую команду du чтобы получить размер файла:

> du -hs ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

Эта команда du -hs возвращает размер файла как "49G". Чем объясняется отличие отчетов Finder?

В качестве альтернативы я попытался заменить опцию -s опцией -d следующим образом:

du -hd ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

Эта команда du -hd возвращает размер файла как "59G". Чем объясняется разница между Finder, du -hd и du -hs?

Кроме того, эта команда du -hd не производит вывод в geektool 3. Что дает?

3 ответа3

6

Не Mac OS X, но я где-то читал, что Finder в настоящее время использует base-10.

Может ли быть разница, что du все еще использует base-2?

49.0 GiB * (1024^3 bytes / GB) = 52,613,349,376 bytes = 52.6 GB

(небольшая разница в том, что du округляется до ближайшего ГБ)

4

Также обратите внимание, что "du" возвращает фактическое используемое дисковое пространство, тогда как другие инструменты возвращают выделенное пространство. Там, где у вас есть разреженные файлы, эти 2 значения могут быть совершенно разными - у меня есть файл, которому выделено 2 ТБ, но он занимает только около 200 МБ дискового пространства.

3

Нифл это правильно. du возвращает base-2, Finder возвращает base-10 и 49GiB ≈ 52,91GB

Аргумент -d требует, чтобы вы указали глубину. Из экспериментов, только что появившихся, вы можете получить что-то, кроме числа для глубины, он съест заданный вами аргумент и будет вести себя так, как будто вы сделали -d 0 . Получаемый вами 59G - это размер текущего каталога, а не размер файла vmwarevm.

Вот эксперимент, который я провел:

[~]$ ls -d Code
Code/

[~]$ du -h -s Code
8.3M    Code

[~]$ du -h -d 0 Code
8.3M    Code

[~]$ du -h -d Code
 38G    .           <-- this is the size of ~/

[~]$ du -h -d 0
 38G    .

Вы можете прочитать справочную страницу Mac OS X du(1) для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .