2

Показательный пример: TextEdit от Apple по адресу /Applications/TextEdit.app

Если вы вычислите физический размер с помощью echo "$(/usr/bin/du -k -d 0 /Applications/TextEdit.app | /usr/bin/awk '{print $1}') * 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" (даже если по какой-то причине это "524320") TextEdit) и

(б) общий несжатый физический размер (использование диска) каталога или пакета, который содержит сжатые файлы HFS.

Примечание: для вычисления размера должны использоваться только собственные команды macOS, при этом не используются данные, зависящие от Spotlight, например, из команды mdls , которая содержит ошибки и иногда возвращает (null) ноль ) для ключа kMDItemPhysicalSize , за исключением того факта, что некоторые пользователи имеют Spotlight вообще отключен.

1 ответ1

0

Используйте команду afsctool с флагом -v , например:

$ afsctool -v README
README:
File is HFS+ compressed.
File size (uncompressed data fork; reported size by Mac OS 10.6+ Finder): 3046 bytes / 3 KB (kilobytes) / 3 KiB (kibibytes)
File size (compressed data fork - decmpfs xattr; reported size by Mac OS 10.0-10.5 Finder): 0 bytes / 0 KB (kilobytes) / 0 KiB (kibibytes)
File size (compressed data fork): 1427 bytes / 1 KB (kilobytes) / 1 KiB (kibibytes)
Compression savings: 53.2%
Number of extended attributes: 0
Total size of extended attribute data: 0 bytes
Approximate overhead of extended attributes: 268 bytes
Approximate total file size (compressed data fork + EA + EA overhead + file overhead): 1943 bytes / 2 KB (kilobytes) / 2 KiB (kibibytes)

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