tentar entender o básico do du
comando não é tão simples para mim. Por exemplo, existe esta -h
opção que é definida como impressão em "formato legível por humanos". O problema é que esta opção altera o valor exibido:
~$ du --apparent-size -sh Documents/
376M Documents/
~$ du --apparent-size -s Documents/
384767 Documents/
normalmente 384767 deve ser arredondado para 385M. Então, qual é o valor correto 376M ou 385M?
Pior ainda :
~$ du -bsh Documents/
376M Documents/
~$ du -bs Documents/
394001294 Documents/
Se você dividir por 1000, sim, mas não é isso que du está mostrando. Está usando unidades IEC (binárias) onde 1 kB = 1024 bytes; 1 MB = 1.024 kB; e assim por diante. Alguns outros programas os mostrariam como KiB, MiB, etc.
(A maior parte do armazenamento funciona com blocos com tamanho de potência de 2, por exemplo, setores 512b ou 4096b, portanto, as unidades binárias IEC são um ajuste um pouco melhor do que as unidades decimais SI.)
A unidade padrão para 'du' sem a opção '-h' são blocos de 1024 bytes (o que equivale a 1 KB), o que é
384767 / 1024 = 375.749…
arredondado para 376 MB (ou MiB, se você preferir). Da mesma forma, quando você usa a opção '-b' para começar com bytes, é394001294 / 1024 / 1024
.Adicione a
--si
opção se desejar as unidades decimais (as unidades do "fabricante do HDD"). Isto também funciona comdf -h
els -lh
(ou seja, ferramentas do 'coreutils'), embora não necessariamente com outros programas – alguns sempre usam unidades IEC sem opção de troca.