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 -schno diretório pessoal do meu usuário e obtive 51 GB, mas rodar du -sch *no mesmo diretório resulta em 47 GB. No começo, 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.

Aren Tahmasian
fonte

Respostas:

1

No começo, 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ê faz tem 4 GB de arquivos ocultos / diretórios, ou talvez até mais (em um sentido) se houver hardlinks envolvidos.

Isso lhe dirá (caí -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 desta resposta ).

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

A menos que haja arquivos com links físicos 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ê soma manualmente, mas apenas uma vez quando os dusoma para você em uma única passagem . Nesse caso, há ainda mais espaço ocupado por arquivos / diretórios ocultos do que você imagina (embora parte desse espaço seja "compartilhada" com partes não ocultas). Observe que há uma -lopçãodu que controla esse comportamento:

-l, --count-links
conte os tamanhos várias vezes se for vinculado

Kamil Maciorowski
fonte
Ei Kamil, você está absolutamente correto, havia um monte de hardlinks que eu não havia considerado. Obrigado pela ajuda e obrigado pela informação sobre du !! Vou me certificar de acrescentar que as minhas notas:]
Aren Tahmasian