Saída errada de du?

12

Eu acho que meu comando du está confuso.

% du -shc DIR ...
...
6123941496      total

% du -shc DIR ...
...
6.1G    total

% du -sc --si DIR ...
...
6.6G    total

Tentei fornecer LANG=Ce verificar novamente o resultado em uma planilha. Parece que -h já sai usando potências de 1000 (--si) e --si dá uma resposta errada. Eu acho que a resposta correta deve ser 5.7G para -h e 6.1G para --si. Então o que acontece aqui?

% du --version
du (GNU coreutils) 8.20
...

% uname -a
Linux XXX 3.9-1-amd64 #1 SMP Debian 3.9.8-1 x86_64 GNU/Linux
Gerry Lufwansa
fonte
3
Por favor, inclua os comandos reais. O que ...representam? Parece que você executou exatamente o mesmo comando duas vezes e obteve resultados diferentes, é isso? Você leu a explicação dos modificadores de tamanho man du?
terdon

Respostas:

18

Repita seus testes usando o --apparent-sizeinterruptor.

$ du -shc --apparent-size DIR ...

trecho da página do manual

--apparent-size
       print  apparent sizes, rather than disk usage; although the apparent size is
       usually smaller, it may be larger due to holes in (`sparse') files, internal 
       fragmentation, indirect blocks, and the like
slm
fonte
1
Ah, aparentemente -b é equivalente a '--apparent-size --block-size = 1'. Eu senti falta disso. O uso do 'du -shc --apparent-size' agora fornece 5.7G agora. Obrigado!
Gerry Lufwansa 10/10
@GerryLufwansa - sim, quando você começa a misturar diferentes sistemas de arquivos ou sistemas CIFS montados, isso se torna realmente perceptível. Eu sempre uso um -bou --apparent-size.
slm
... e a diferença pode ser realmente grande nos sistemas HSM, nos quais os arquivos migrados reportam 0 (ou algo como alguns kB) sem --apparent-size.
Ansgar Esztermann 10/10
Alguma solução para o duque vem com o Mac OS X?
Alec Jacobson