Показательный пример: TextEdit от Apple на /Applications/TextEdit.app
Если вы вычислите физический размер, echo "$(/usr/bin/du -k -d 0 /Applications/TextEdit.app | /usr/bin/awk '') * 1024" | /usr/bin/bc -l
то получите (в моем случае 10.11.6) размер 4538368 байт .
Однако, если вы откроете информационное окно в Finder, он скажет вам, что физический размер намного больше: 8,6 МБ на диске, почти вдвое больше.
Понятно почему: Apple использовала сжатие HFS в TextEdit. Запуск стороннего инструмента afsctool (который можно установить с помощью Homebrew) дает следующий результат:
/usr/local/bin/afsctool /Applications/TextEdit.app /Applications/TextEdit.app: Number of HFS+ compressed files: 693
Теперь, очевидно, macOS знает несжатый физический размер, о чем свидетельствует значение размера на диске в информационном окне Finder.
У меня вопрос: есть ли способ получения этой информации из командной строки только для чтения, то есть способ показать:
(a) несжатый физический размер (использование диска) файла, сжатого HFS, то есть файла, для которого /usr/bin/stat -f %f
возвращается «32» (хотя в TextEdit по какой-то причине это «524320»), и
(б) общий несжатый физический размер (использование диска) каталога или пакета, который содержит сжатые файлы HFS.
Примечание: только местные команды MacOS должны использоваться для расчета размера, а не с помощью Spotlight-зависимых данных, например, от mdls
команды, которая глючит и иногда возвращается (null)
на kMDItemPhysicalSize
ключ, кроме того факта, что некоторые пользователи были отключены Spotlight в целом.