Почему Finder и du сообщают о разном размере файла?
3283
flipdoubt
Я пишу скрипт geektool 3, чтобы показать размер конкретной виртуальной машины VMware Fusion. Такой .vmwarevm«файл» действительно является упакованным каталогом.
Get Info в Finder говорит, что файл "52,91 ГБ". Я запускаю следующую duкоманду, чтобы получить размер файла:
> du -hs ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk ''
Эта du -hsкоманда возвращает размер файла как "49G". Чем объясняется отличие отчетов Finder?
В качестве альтернативы я попытался заменить -sопцию на -dтакую:
du -hd ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk ''
Эта du -hdкоманда возвращает размер файла как "59G". Чем объясняется разница между Finder du -hdи du -hs?
Кроме того, эта du -hdкоманда не производит вывод в geektool 3. Что дает?
3 ответа на вопрос
6
Nifle
Не Mac OS X, но я где-то читал, что Finder в настоящее время использует base-10.
Может ли быть разница, что du все еще использует base-2?
(небольшая разница в том, что duокругляется до ближайшего ГБ)
Версия base-2 наверняка будет * меньше *, правда?
Phoshi 14 лет назад
0
@Phoshi - нашедший говорит 52,91, дю говорит 49
Nifle 14 лет назад
0
Ах да, ты прав. Я неправильно понял этот второй "59G".
Phoshi 14 лет назад
0
Кто-нибудь знает, как написать скрипт, который конвертирует вывод du в базу 10?
flipdoubt 14 лет назад
0
4
Cry Havok
Также обратите внимание, что «du» возвращает фактическое используемое дисковое пространство, тогда как другие инструменты возвращают выделенное пространство. Там, где у вас есть разреженные файлы, эти 2 значения могут быть совершенно разными - у меня есть файл, которому выделено 2 ТБ, но он занимает всего около 200 МБ дискового пространства.
Какой инструмент командной строки, который отображает выделенное пространство в OS X?
flipdoubt 14 лет назад
0
`ls` будет (как описано Стивеном).
Cry Havok 14 лет назад
0
3
Stephen Jennings
Нифл это правильно. 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 .