O Mac OS X não informa corretamente os tamanhos dos diretórios?

O Mac OS X não informa corretamente os tamanhos dos diretórios?

No Finder, percebi que se eu duplicar alguns arquivos .app (na pasta Aplicativos), o Finder mostrará que o arquivo .app duplicado não tem o mesmo tamanho do original. Essa discrepância de tamanho de arquivo não ocorre para todos os arquivos .app que eu duplico, mas parece que quanto maior o arquivo .app, maior a probabilidade de a duplicata não mostrar o mesmo tamanho do original. aqui estão alguns exemplos:

GarageBand.app - 381.7 MB
GarageBand copy.app - 373.2 MB

iMovie.app - 695.3 MB
iMovie copy.app - 635.4 MB

Install Xcode.app - 1.81 GB
Install Xcode copy.app - 1.57 GB

Agora sou novo em Macs e, depois de perceber esse problema de discrepância no tamanho do arquivo, descobri que os arquivos .app na verdade não são arquivos - são na verdade diretórios, mas o Finder os exibe como se fossem arquivos. Então pensei que talvez o processo de duplicação não tivesse copiado todo o conteúdo do diretório .app original e isso explicasse a diferença no "tamanho do arquivo". Mas então baixei e instalei o DeltaWalker, que é uma ferramenta de comparação de arquivos/pastas, e o DeltaWalker disse que os diretórios .app duplicados eram exatamente iguais aos diretórios .app originais. Portanto, o processo de duplicação funcionou perfeitamente e, portanto, parece ser um problema com o tamanho dos arquivos de relatório do Finder.

Também verifiquei os tamanhos dos diretórios no Terminal, usando o comando “du”, e isso também mostra discrepâncias de tamanho entre os diretórios originais e duplicados:

du -k /Applications/GarageBand.app/
212868  /Applications/GarageBand.app/

du -k /Applications/GarageBand\ copy.app/
397880  /Applications/GarageBand copy.app/

du -k /Applications/iMovie.app/
629644  /Applications/iMovie.app/

du -k /Applications/iMovie\ copy.app/
700500  /Applications/iMovie copy.app/

du -k /Applications/Install\ Xcode.app/
1771864 /Applications/Install Xcode.app/

du -k /Applications/Install\ Xcode\ copy.app/
1772228 /Applications/Install Xcode copy.app/

Além disso, não são apenas diretórios .app. Dupliquei meu diretório /Developer/Library e aqui está o que você disse:

du -k /Developer/Library/
320784  /Developer/Library/

du -k /Developer/Library\ copy/
399868  /Developer/Library copy/

Alguém pode explicar por que o Mac OS X não parece relatar corretamente os tamanhos dos diretórios? É um bug (difícil de acreditar para algo tão simples) ou estou faltando alguma coisa (sendo um novo usuário de Mac)?

(Estou executando o Mac OS X Lion 10.7.2)


ATUALIZAÇÃO em resposta a elofturtle:

O que há de mais estranho nisso é que o Finder não tem consistência. Acabei de fazer 2 duplicatas do GarageBand.app e, em seguida, fiz 2 duplicatas de uma das duplicatas. O Finder exibe cada duplicata com um tamanho diferente:

GarageBand.app - 381.7 MB
GarageBand copy.app - 357.6 MB (duplicate of GarageBand.app)
GarageBand copy 2.app - 353.9 MB (duplicate of GarageBand.app)
GarageBand copy 3.app - 378.2 MB (duplicate of GarageBand copy 2.app)
GarageBand copy 4.app - 329.1 MB (duplicate of GarageBand copy 2.app)

Observe também que "GarageBand copy 3.app" é maior que "GarageBand copy 2.app", enquanto "GarageBand copy 4.app" é menor que "GarageBand copy 2.app". Isso deve ser um bug no Finder.

Aqui está o que “du -k” diz sobre todos eles:

212868  /Applications/GarageBand.app/
397880  /Applications/GarageBand copy.app/
397880  /Applications/GarageBand copy 2.app/
397880  /Applications/GarageBand copy 3.app/
397880  /Applications/GarageBand copy 4.app/

Pelo menos diz que todas as duplicatas são do mesmo tamanho, mas não são do mesmo tamanho do original.

Responder1

As diferenças vieram de diferentes motivos: diferentes formas de contagem, diferentes ferramentas, compressão e o que parece ser um bug.

Oprimeira diferençaem tamanho que você vê parece ser umbug no Finder. Os tamanhos dos arquivos mostrados pelo Finder são calculados de alguma forma em tempo real e armazenados em cache nos .DS_Storearquivos. Por alguma razão, ao duplicar um grande aplicativo/pasta, o Finder calcula seu tamanho durante o processo de cópia e armazena em cache o tamanho, então incompleto. Em seguida, ele mostra esse tamanho em cinza nas janelas do Finder, cinza significandoo Finder sabe que o conteúdo mudou desde o último cálculo de tamanho, mas ainda não o recalculou.

A única maneira que encontrei de recalcular corretamente o tamanho é excluindo o .DS_Storearquivo na pasta Aplicativo, fechando o Finder (no Activity Monitor, por exemplo) e reiniciá-lo novamente (no ícone do Dock). Se você não excluir o .DS_Storearquivo, ele ainda permanecerá acinzentado. Talvez esperandoàs vezes(horas, dias, reinicialização, ...) fará com que o Finder faça isso sozinho.

Depois disso, você verá que todos os tamanhos relatados pelo Finder são iguais.

Então, sim, parece um bug do Finder, pelo menos no OSX Lion (testado com 10.7.4 aqui, Finder versão 10.7.3). Você também pode vereste tópicoque relata o mesmo tipo de comportamento.

Então, vamos considerar a duferramenta. A princípio, pensei que a diferença que vemos poderia ser explicada pela diferença entre os tamanhos lógicos e físicos dos itens que estão sendo copiados. O tamanho lógico é orealtamanho do item, ou seja, cada pedaço de informação que ele contém somado. O tamanho físico é o tamanho do item no disco, onde cada bit de informação é gravado em um setor do disco.

Por exemplo, um arquivo contendo um único caractere acabaria tendo um tamanho lógico de 1 byte, mas um tamanho físico de 512 bytes ou mesmo 4.096 bytes quando realmente gravado no disco. O tamanho físico geralmente é maior que o tamanho lógico (e depende do tamanho real do setor/bloco do disco ou do sistema de arquivos). Isso éexplicado em mais detalhes neste outro tópico. O tamanho lógico pode ser maior no caso dearquivos esparsos, mas o HFS+ não parece oferecer suporte a esse recurso.

dumostra apenas o tamanho físico (e você pode dizer o que é BLOCKSIZE). Você pode ver que o tamanho informado por dué sempre maior (ou, excepcionalmente, igual) ao original. Isso ocorre devido à fragmentação do sistema de arquivos e do espaço em disco. Quando você copia um arquivo (na verdade, aqui um monte de arquivos, já que um Aplicativo é um diretório), novos setores são alocados no disco e,à medida que ocorre a fragmentação, o número de blocos usados ​​geralmente é maior que o do item original. Algumas pessoas chamam issoFolga de arquivo.

Agora, de volta ao Finder. Se você abrir oobter informaçãojanela dos aplicativos que você duplicou, você verá que o Finder está realmente relatando o tamanho lógico e físico do item que você selecionou. O que então faz sentido. Você ainda poderá comparar o tamanho físico relatado pelo Finder e aquele relatado por duse fizer um pouco de matemática.

Por que fazer algumas contas? Porque o Finder mostra os tamanhos dos arquivos em kB, MB ou GB, onde duos reporta em kiB, MiB ou GiB. Esses são osPrefixos binários IECque deve ser usado para calcular e exibir unidades de informação digital.

Mas, na verdade, não tenho certeza se o File Slack está envolvido aqui, há outra coisa. Volumes HFS+ permitem compactação, feito de forma transparente, e a Apple usa isso para os itens originais instalados pelo sistema operacional. Então, quando os arquivos são copiados usando ferramentas padrão, a compactação não é mais usada (como padrão, para ser compatível com versões anteriores). Se quiser manter a compactação desses arquivos, você precisará usar o dittocomando em vez de cpqualquer ação do Finder. Isso éexplicado nesta revisão.

Aqui está o resultado da cópia do iTunes.app usando diferentes técnicas. Você verá que idem deixa o Aplicativo exatamente do mesmo tamanho, preservando a compactação, onde cpnão. E você pode até remover o binário do arco que não precisa, reduzindo então todo o tamanho):

antoine@amarante:/Applications$ du -ms iTunes.app/
281 iTunes.app/
antoine@amarante:/Applications$ cp -a iTunes.app/ iTunes-copy.app/
antoine@amarante:/Applications$ ditto iTunes.app/ iTunes-ditto.app
antoine@amarante:/Applications$ ditto --arch x86_64 iTunes.app/ iTunes-64.app
antoine@amarante:/Applications$ du -ms iTunes*
236 iTunes-64.app
289 iTunes-copy.app
281 iTunes-ditto.app
281 iTunes.app

Obrigado a @DanPritts por sua respostano meu post complementar.

Responder2

É uma falha/bug horrível no OS X. A maneira mais fácil de ver isso é duplicar um grande pacote de aplicativos, mostrar o conteúdo e excluir um arquivo enorme de dentro dele. O espaço não será recuperado. O arquivo ainda é enorme. Por exemplo, se você tiver um pacote de aplicativos de 3,5 GB, mostrar o conteúdo e remover 3 GB dele, agora você deverá ter um aplicativo com tamanho de arquivo de 500 MB. Você não vai. Ainda serão 3,5 GB.

Responder3

Isso é basicamente um palpite, mas vejo duas possibilidades:

  1. Alguns dados foram excluídos, mas não desalocados no original e não foram copiados. No entanto, ele aparece em algumas pesquisas de uso de disco, mas não em outras (parâmetros diferentes fornecidos ao du ou qualquer que seja o OS X usado internamente).
  2. Alguns dados são vinculados ao local original e isso afeta o tamanho percebido em diferentes ferramentas.

Se (1) você provavelmente deverá obter resultados diferentes fazendo uma terceira cópia e comparando as cópias.

Responder4

Tive esse problema com meu diretório inicial depois de movê-lo para um disco rígido interno após instalar o Yosemite no SSD. Ao usar ‘Get Info’ relatou um tamanho incorreto de apenas 8 GB, embora mostrasse o tamanho correto de 240 GB na barra de status do Finder. Eu consertei clicando em Obter informações na pasta Usuários, que calculou corretamente e corrigiu o tamanho incorreto relatado pelo diretório inicial.

informação relacionada