Por que diferentes parâmetros de unidade para 'du' fornecem resultados conflitantes?

2

Eu recebo essa saída ao verificar a quantidade total de espaço que estou usando no meu Walkman.

david@Milton:/media$ du -b --max-depth=0 WALKMAN/
14823290693 WALKMAN/
david@Milton:/media$ du -k --max-depth=0 WALKMAN/
14523776    WALKMAN/

Última vez que verifiquei, 14,523,776 KB * 1024 = 14,872,646,624 B , não 14,823,290,693 B . Dividindo os dois, sua unidade "K" parece ser igual a cerca de 1020.62 em vez de 1024 como anunciado. Isso está causando alguns erros no programa que eu escrevi para sincronizar meu Walkman, para que ele fique mais rápido do que o esperado. Alguém pode explicar essa discrepância?

    
por dpitch40 08.06.2012 / 05:04

1 resposta

3

du -b é descrito na documentação de ajuda (du --help) como:

  -b, --bytes           equivalent to '--apparent-size --block-size=1'

onde

      --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

du -k, pelo contrário, fornece

  -k                    'like --block-size=1K'

Isto é, du -k dá o uso do disco ao arquivo, enquanto du -b dá o 'tamanho aparente' do arquivo. O tamanho aparente é geralmente (mas nem sempre) menor.

(Fonte: relatório de erros do coreutils ).

    
por 08.06.2012 / 05:12