3

Есть поведение, которое я не могу объяснить в OSX Lion (может быть и в других версиях).

Когда я копирую или дублирую некоторые приложения, например iTunes, которые содержат динамические библиотеки, физический размер этих библиотек изменяется (размер увеличивается). Это может быть из-за фрагментации диска. Но дело не только в том, что удивительно то, что исходный физический размер меньше, чем логический размер (где обычно физический размер всегда больше, чем логический, за исключением случаев, когда используется сжатие).

Чтобы проиллюстрировать мой случай:

antoine@amarante:/Applications$ ls -ls iTunes.app/Contents/MacOS/libgnsdk_submit.1.8.2.dylib 
384 -rwxrwxr-x+ 1 root  admin  558704  8 jul  2011 iTunes.app/Contents/MacOS/libgnsdk_submit.1.8.2.dylib

ls рассматривать размер блока в 512 байт, то 384 блока составляют 196608 байт по сравнению с логическим размером, указанным в 558704 байт. Или, как показано в окне получения информации из Finder:

558.704 octets (197 Ko sur disque)

Это также показано после некоторых операций копирования, когда я копировал все приложение iTunes. Первая iTunes copie iTunes - это копия, созданная с помощью Finder, а iTunes-cp - копия, созданная с помощью команды CLI cp -a .

antoine@amarante:/Applications$ ls -ls iTunes*.app/Contents/MacOS/libgnsdk_dsp.1.8.2.dylib 
11632 -rwxr-xr-x+ 1 antoine  admin  5955104  8 jul  2011 iTunes copie.app/Contents/MacOS/libgnsdk_dsp.1.8.2.dylib
11632 -rwxrwxr-x+ 1 antoine  admin  5955104  8 jul  2011 iTunes-cp.app/Contents/MacOS/libgnsdk_dsp.1.8.2.dylib
 3944 -rwxrwxr-x+ 2 root     admin  5955104  8 jul  2011 iTunes.app/Contents/MacOS/libgnsdk_dsp.1.8.2.dylib

Мы видим, что скопированные файлы имеют физический размер больше (11632 * 512 = 5955584 байта), чем логический размер (5955104), за исключением исходного файла, который намного меньше. Когда я копирую один файл .dylib по себе, поведение остается тем же. Это происходит для нескольких файлов динамической библиотеки, а не для всех.

Как исходный файл библиотеки может быть меньше копий? Есть ли какое-то сжатие? Или мои оригинальные файлы каким-то образом повреждены? Как я могу это проверить?

1 ответ1

4

На самом деле, есть сжатие в HFS+ на Mac на 10.6 и позже. Он прозрачен, и его даже сложно обнаружить с помощью стандартных инструментов ОС.

И это не всегда делается. Для обратной совместимости по умолчанию не сжимается, но они сжимают ОС, когда она установлена.

Список инструментов, в случае обрыва ссылки:

  • hfsdebug
  • afsctool
  • stat -f %f - сообщает о "пользовательских флагах" в файлах - один из флагов означает сжатие. Я получаю "32" для сжатого файла и "0" для несжатого файла. Вероятно, 32 карты в битовое поле.
  • ditto - имеет поддержку для записи сжатых файлов

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