Você está comparando maçãs e laranjas.
Observe que ls -s
fornecerá o tamanho de um arquivo com base no tamanho dos dados reais no arquivo.
Por padrão, o comando du
fornecerá um uso de disco baseado em tamanho. Como o espaço em disco é alocado em blocos e os comprimentos dos arquivos quase nunca são múltiplos inteiros do tamanho do bloco, você acaba com um bloco que é parcialmente preenchido com dados, mas que não pode ser usado por outro arquivo.
Em outras palavras, se o seu sistema de arquivos tiver um tamanho de bloco de 512 bytes, um arquivo com comprimento de 1 byte ocupará 512 bytes no disco, o mesmo que um arquivo de 511 bytes. Um arquivo de 513 bytes ocupará 2 blocos e 1024 bytes de espaço em disco.
A soma total dos usos do disco du file
será quase sempre maior que a soma de ls -s file
tamanhos de arquivo, especialmente quando você tem muitos (pequenos) arquivos e / ou tamanhos de bloco muito grandes.
Usar a opção du -b
NÃO conta blocos, mas se comporta como ls -s
:
-b
equivalent to--apparent-size --block-size=1
--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 frag‐ mentation, indirect blocks, and the like-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
du -sh
converterá o número total de blocos em um formato legível, e du -bh
imprimirá a soma dos tamanhos aparentes, em formato legível por humanos.
No meu Maildir, com muitos arquivos pequenos que diferem um pouco:
$ du -bs cur/
84088436 cur/
$ du -s cur/
91800 cur/
$ du -sh cur/
90M cur/
$ du -bh cur/
81M cur/
EDIT Com relação à conversão para saída legível e megabytes, por favor não negligencie toda a "polêmica" de legível em prefixos decimais SI versus múltiplos binários, poderes de 1000 contra potências de 1024.
Veja em segundo plano esta página: link sobre como utilitários GNU como ls
e du
exibem-nos.
O capital M em du -h
output representa 1.048.576 bytes.