Por que du -sh e o gerenciador de arquivos discordam?

5

Eu gostaria de saber por que os tamanhos de diretório que obtenho quando executo du -sh discordam daqueles que o gerenciador de arquivos mostra. O que eles fazem de forma diferente e quão grandes são os meus dados realmente? Eu não estou muito interessado no tamanho que leva no disco (por causa de blocos e coisas assim), eu só quero saber o tamanho dos dados reais.

    
por kutschkem 02.10.2013 / 09:50

3 respostas

3

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.

    
por Henning Kockerbeck 02.10.2013 / 11:13
0

O caminho certo para descobrir o uso correto do espaço em disco é usar o comando du ( du -sh ). Isso porque seu gerenciador de arquivos (como o Nautilus) não leva em conta arquivos ocultos.

Ou você pode usar o Disk Usage Analyzer . Use o seguinte comando para iniciá-lo no terminal:

baobab

Vejatambém: Como encontrar - Tamanho de um diretório & amp; Espaço livre em disco .

    
por Radu Rădeanu 02.10.2013 / 10:36
0

Eu acho que você usa o Nautilus como gerenciador de arquivos: arquivos ocultos não são levados em conta. Isso é um bug conhecido desde 2006 .

    
por Dominik 31.10.2013 / 23:50