Resposta curta : O gerenciador de arquivos calcula com unidades baseadas em 1000, du
calcula por padrão com unidades baseadas em 1024. Por causa disso, o gerenciador de arquivos vê um arquivo de 1024 bytes como " 1,024 kB ", enquanto du
o visualiza como" 1.000 kiB ". Isso (literalmente) se multiplica se você pensar em arquivos maiores, por exemplo, Megabyte (1000 * 1000) vs. Mibibyte (1024 * 1024) ou Gigabyte (1000 * 1000 * 1000) vs. Gibibyte (1024 * 1024 * 1024).
Resposta longa : A diferença decorre das diferentes maneiras pelas quais computadores e humanos contam. A maioria das sociedades humanas atuais faz a matemática com o sistema decimal, na base de 10. Nem todas as culturas da história, por isso, por exemplo, dividimos o dia em 24 horas. Mas com a maioria das coisas, usamos 10 ou múltiplos de 10 ou 10 para a enésima potência. Isto é evidente no Sistema Internacional de Unidades (SI), que usa prefixos para marcar 10 ^ 3 = 1000. 1000 gramas é igual a 1 * quilo * grama, a parte milésima de 1 metro é igual a 1 * mili * metro e assim strong. Técnico, 1000 kg seria 1 "megagrama", mas tradicionalmente, usamos uma palavra diferente para ele, "ton". Ainda assim, é baseado em 1000.
Por outro lado, os computadores calculam não com base em 10, mas com base em 2 - liga / desliga, energia / sem energia, verdadeiro / falso. Portanto, os computadores usam multiplos e potências de 2 em vez de multiplicações de 10: 2, 4, 8, 16, 32, 64 e assim por diante. O poder de 2 que é o mais próximo de 1000 é 1024. Por isso, "1 kilobyte" foi definido originalmente como "1000 byte", como a maioria das outras unidades teria sido, mas como "1024 byte". Da mesma forma, "1 megabyte" originalmente era "1024 * 1024 bytes", "1 gigabyte" originalmente era "1024 * 1024 * 1024 bytes" e assim por diante.
"Naquela época", a maioria das pessoas que usavam computadores sabia disso, e na ordem das escalas usadas naqueles dias, não fazia diferença. Se um arquivo é de 1000 bytes "grande" ou 1024 bytes, na verdade não importa na maioria dos casos. Mas o tempo passou, os computadores tornaram-se onipresentes e os números tornaram-se maiores. Hoje, muitos usuários de computador não sabem sobre 1000 x 1024, ou eles não se importam. Não faz muito sentido explicar para "Joe Everbody", que com quase tudo, "quilo" significa "1000", mas com computadores, é diferente. Além disso, a diferença começa a ser significativa. Se você comparar um "Gigabyte" baseado em 1000 a um "Gigabyte" baseado em 1024, a diferença será de aproximadamente 10%. Com "Terabyte" e maior, a diferença é uma fração ainda maior.
Portanto, nos últimos anos, muitos países decidiram diferenciar entre esses dois sistemas de cálculo. Os prefixos clássicos kilo-, mega-, giga-, tera- etc. são hoje quase sempre usados com base em 1000. Assim, um arquivo com 1024 bytes não seria mais "1.000 kilobyte", mas "1.024 kilobyte". As unidades baseadas em 1024 receberam novos prefixos, com a primeira sílaba do "antigo" seguida de "bi": Kilo - > kibi, mega - > mibi, tera - > tebi e assim por diante. Os símbolos são KiB, MiB, TiB e assim por diante.
O Nautilus, gerenciador de arquivos do Ubuntu, calcula com base em 1000. Por isso, ele mostra os tamanhos dos arquivos em kilobytes, megabytes, etc. du
, por outro lado, calcula com base em 1024. Então, com du
kibibytes, mebibytes etc. E como dito acima, uma vez que estamos no tera- vs. tibi- range e acima, ele começa a aparecer;)
du
oferece a opção --si
. Funciona como -h
, mas calcula com unidades SI em vez de baseado em 1024. Então
du --si -s my_files/
daria um tamanho em KB, MB, GB etc., enquanto
du -sh my_files/
daria a você um tamanho em KiB, MiB, GiB, etc.