A saída de du -sh / tmp é muito maior que a soma de du em cada arquivo e diretório em / tmp. Por quê? [duplicado]

1

Este sistema é o linux mint 18.3, basicamente o ubuntu.

sudo du --apparent-size -sb /tmp rende 476mb no meu sistema atualmente.

se eu executar sudo du --apparent-size -sb /tmp/* /tmp/.??* e adicionar tudo, obtenho cerca de 4mb .

(Eu sei que -b inclui --apaparent-size, só quer ser explícito para esta questão)

Na verdade, para encontrar a quantia desde que eu sou preguiçoso, eu corri:

sudo du --apparent-size -sb /tmp/* /tmp/.??* | cut -f 1 | paste -sd+ - | bc

Por que a diferença? Existem alguns arquivos ocultos em / tmp que du não está encontrando, ou há algum erro em meus comandos?

edit: apesar do meu .??* ruim para pegar .dirs e .files, não havia arquivos .a, .b, .c etc neste caso.

    
por marathon 06.04.2018 / 06:29

1 resposta

4

Uma maneira de reproduzir este caso é criar muitos arquivos vazios (idealmente de tamanho longo do arquivo) que expandirão o tamanho do diretório ( . ) onde os nomes dos arquivos são armazenados, mas não o tamanho dos arquivos (e * não corresponde ao diretório em que esses nomes de arquivos estão armazenados):

% mkdir emptydir && cd emptydir
% du --apparent-size -sb .
6       .
% du --apparent-size -sb * | cut -f 1 | paste -sd+ - | bc
zsh: no matches found: *
% jot 100000 | while read n; do touch $n; done
% du --apparent-size -sb .
2359296 .
% du --apparent-size -sb * | cut -f 1 | paste -sd+ - | bc
0

Então, pegamos o diretório vazio de 6 a 2359296 enquanto a versão glob ainda totaliza zero porque os arquivos criados estão vazios.

    
por 06.04.2018 / 16:16