Há um comportamento que não posso explicar no OSX Lion (pode estar em outras versões também).
Quando copio ou duplico alguns aplicativos, por exemplo o iTunes, que contêm algumas bibliotecas dinâmicas, o tamanho físico dessas bibliotecas muda (o tamanho aumenta). Isso pode ser devido à fragmentação de disco. Mas não é só isso, porque o surpreendente é que o tamanho físico original é menor que o tamanho lógico (onde normalmente o tamanho físico é sempre maior que o tamanho lógico, exceto quando há compressão envolvida).
Para ilustrar meu caso:
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
considera um tamanho de bloco de 512 bytes, 384 blocos fazem 196608 bytes em comparação com o tamanho lógico reportado de 558704 bytes. Ou, como mostrado na janela obter informações no Finder:
558.704 octets (197 Ko sur disque)
Isso também é mostrado após algumas operações de cópia em que copiei todo o aplicativo iTunes. O primeiro iTunes copie
é uma duplicata feita através do Finder e iTunes-cp
é uma cópia feita com o comando 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
Vemos que os arquivos copiados têm um tamanho físico maior (11632 * 512 = 5955584 bytes) do que o tamanho lógico (5955104), exceto pelo arquivo original, que é muito menor. Quando copio o único arquivo .dylib
por conta própria, o comportamento é o mesmo. Isso acontece para alguns arquivos de biblioteca dinâmica, não para todos.
Como o arquivo da biblioteca original pode ser menor que as cópias? Existe alguma compressão envolvida? Ou meus arquivos originais estão corrompidos de alguma forma? Como posso verificar isso?