Por que o Finder e du reportam tamanho de arquivo diferente?

3

Estou escrevendo um script geektool 3 para mostrar o tamanho de uma máquina virtual específica do VMware Fusion. Esse .vmwarevm "file" é realmente um diretório empacotado.

Obter informações no Finder diz que o arquivo é "52,91 GB". Eu corro o seguinte comando du para obter o tamanho do arquivo:

> du -hs ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

Este comando du -hs retorna o tamanho do arquivo como "49G". O que explica a diferença do que o Finder reporta?

Como alternativa , tentei substituir a opção -s pela opção -d da seguinte forma:

du -hd ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

Este comando du -hd retorna o tamanho do arquivo como "59G". O que explica a diferença entre o Finder, du -hd e du -hs ?

Além disso, esse comando du -hd não produz saída no geektool 3. O que dá?

    
por flipdoubt 28.03.2010 / 17:01

3 respostas

6

Não é um usuário do Mac OS X, mas eu li em algum lugar que o Finder usa a base-10 hoje em dia.

Poderia a diferença ser que du ainda usa base-2?

49.0 GiB * (1024^3 bytes / GB) = 52,613,349,376 bytes = 52.6 GB

(a pequena diferença é porque du é arredondado para o GB mais próximo)

    
por 28.03.2010 / 17:18
4

Observe também que "du" retorna o espaço em disco real usado, enquanto outras ferramentas retornarão o espaço alocado. Onde você tem arquivos esparsos, esses 2 valores podem ser bem diferentes - eu tenho um arquivo que tem 2 TB alocado para ele, mas ele ocupa apenas 200 MB de espaço em disco.

    
por 28.03.2010 / 20:53
3

O nifle está correto. du retorna base-2, o Finder retorna base-10 e 49GiB≈ 52.91GB

O argumento -d requer que você especifique uma profundidade. Da experiência agora, parece que se você der algo além de um número para profundidade, ele come o argumento que você especificou e se comporta como se você tivesse -d 0 . O 59G que você está obtendo é o tamanho do diretório atual, não o tamanho do arquivo vmwarevm.

Aqui está o experimento que eu fiz:

[~]$ ls -d Code
Code/

[~]$ du -h -s Code
8.3M    Code

[~]$ du -h -d 0 Code
8.3M    Code

[~]$ du -h -d Code
 38G    .           <-- this is the size of ~/

[~]$ du -h -d 0
 38G    .

Você pode querer ler o Mac OS X du ( 1) manpage para mais informações.

    
por 28.03.2010 / 19:24