Exemplo: o TextEdit da Apple em /Applications/TextEdit.app
Se você calcular o tamanho físico com echo "$(/usr/bin/du -k -d 0 /Applications/TextEdit.app | /usr/bin/awk '{print $1}') * 1024" | /usr/bin/bc -l
, obterá (no meu caso em 10.11.6) um tamanho de 4538368 bytes .
No entanto, se você abrir a janela Informações no Finder, ele informará que o tamanho físico é muito maior: 8,6 MB no disco , quase o dobro do tamanho.
Está claro o porquê: a Apple usou a compactação HFS no TextEdit. Executar a ferramenta de terceiros afsctool (que você pode instalar com o Homebrew) produz este resultado:
/usr/local/bin/afsctool /Applications/TextEdit.app
/Applications/TextEdit.app:
Number of HFS+ compressed files: 693
Agora, o macOS obviamente parece conhecer o tamanho físico não compactado, como evidenciado pelo valor de tamanho no disco na janela Informações do Finder.
A minha pergunta é, se existe uma forma de leitura de linha de comandos para obter essa informação, ou seja, uma forma de mostrar:
(a) o tamanho físico não comprimido (uso do disco) de um arquivo que é compactado por HFS, ou seja, um arquivo para o qual /usr/bin/stat -f %f
retorna "32" (embora seja "524320" para algum motivo no TextEdit), e
(b) o tamanho físico total não compactado (uso do disco) de um diretório ou pacote que contém arquivos compactados HFS.
Observação: somente comandos nativos do macOS devem ser usados para calcular o tamanho, enquanto não usando dados dependentes do Spotlight, por exemplo, do comando mdls
, que é buggy e, às vezes, retorna (null)
para a chave kMDItemPhysicalSize
, além do fato de que alguns usuários desativaram totalmente o Spotlight.