Saída inconsistente do comando 'du'

0

Por que a saída de

du -sch ./

não é idêntico a

du -sch ./*

Por exemplo Eu corri du -sch no diretório home do meu usuário e tenho 51GB, mas executando du -sch * no mesmo diretório resulta em 47GB. No começo eu pensei que talvez fosse contabilizar arquivos ocultos, mas isso não explica quase 4GB de arquivos / pastas ocultos.

Eu li o manual do utilitário de disco, mas não consegui encontrar uma explicação.

    
por Aren Tahmasian 04.04.2018 / 22:24

1 resposta

1

At first I thought maybe it's accounting for hidden files but that doesn't explain nearly 4GB of hidden files/folders.

Como você mediu isso? Eu acho que você faz tem 4 GB de arquivos / diretórios ocultos, ou talvez até mais (de certa forma) se houver hardlinks envolvidos.

Isso lhe dirá (eu perdi -h para obter resultados mais exatos; tail é para passar apenas o "total"; testado em bash ):

du -sc ./.[^.]*    | tail -n 1   # hidden
du -sc ./*         | tail -n 1   # non-hidden
du -sc ./{.[^.],}* | tail -n 1   # hidden and non-hidden by wildcards
du -sc ./          | tail -n 1   # directory as a whole

(sintaxe tirada de esta resposta ).

O primeiro comando é o que você está perdendo. Obter uma soma do primeiro e do segundo resultado; será igual aos dois últimos resultados, a menos que ...

A menos que existam arquivos com link físico entre a parte oculta e a não oculta. Nesse caso, a soma será ainda maior porque esses arquivos serão contados duas vezes quando você somar manualmente, mas somente uma vez quando du somas -los para você em seu único passe . Neste caso, há ainda mais espaço ocupado por arquivos / diretórios ocultos do que você pensa (embora alguns desses espaços sejam "compartilhados" com partes não ocultas). Observe que há -l opção de du que controla esse comportamento:

-l, --count-links
count sizes many times if hard linked

    
por 05.04.2018 / 08:13