Есть поведение, которое я не могу объяснить в 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
по себе, поведение остается тем же. Это происходит для нескольких файлов динамической библиотеки, а не для всех.
Как исходный файл библиотеки может быть меньше копий? Есть ли какое-то сжатие? Или мои оригинальные файлы каким-то образом повреждены? Как я могу это проверить?