Saída inconsistente do comando `du`

Saída inconsistente do comando `du`

Por que a saída de

du -sch ./

não é idêntico a

du -sch ./*

Por exemplo, executei du -schno diretório inicial do meu usuário e obtive 51 GB, mas executar du -sch *no mesmo diretório resultou em 47 GB. A princípio pensei que talvez fosse responsável por arquivos ocultos, mas isso não explica quase 4 GB de arquivos/pastas ocultos.

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

Responder1

A princípio pensei que talvez fosse responsável por arquivos ocultos, mas isso não explica quase 4 GB de arquivos/pastas ocultos.

Como você mediu isso? eu acho que vocêfazertenha 4 GB de arquivos/diretórios ocultos, ou talvez até mais (em certo sentido) se houver hardlinks envolvidos.

Isso vai te dizer (eu larguei -hpara obter resultados mais exatos; tailé passar apenas no "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 retirada deesta resposta).

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

A menos que haja arquivos com link físico entre a parte oculta e a não oculta. Se assim for, a soma será ainda maior porqueesses arquivos serão contados duas vezes quando você soma manualmente, mas apenas uma vez quando duos soma para você em uma única passagem. Nesse caso, há ainda mais espaço ocupado por arquivos/diretórios ocultos do que você pensa (embora parte desse espaço seja "compartilhado" com a parte não oculta). Observe que há-lopção deduque controla esse comportamento:

-l, --count-links
conte os tamanhos muitas vezes se houver link físico

informação relacionada