du -sh /tmpの出力は、/ tmpのすべてのファイルとディレクトリのduの合計よりはるかに大きいです。なぜ? [繰り返し]

du -sh /tmpの出力は、/ tmpのすべてのファイルとディレクトリのduの合計よりはるかに大きいです。なぜ? [繰り返し]

システムは基本的にUbuntuのLinux Mint 18.3です。

sudo du --apparent-size -sb /tmp生産する476MB現在私のシステムにあります。

私が実行しsudo du --apparent-size -sb /tmp/* /tmp/.??*、それをすべて加えると私は得ます。4MB

(-bには--apparent-sizeが含まれていることがわかります。問題を明確にしたかったのです。)

実際、私は怠惰なので、合計を見つけるために以下を実行しました。

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

なぜ違いがありますか? /tmpにduが見つからなかった隠しファイルはありますか?それとも私のコマンドに問題がありますか?

編集:.dirsと.filesをキャプチャするのに問題がありますが、.??*この場合、.a、.b、.cなどのファイルはありません。

ベストアンサー1

この状況を再現する1つの方法は、多数の空のファイル(できるだけ長いファイル名の長さ)を生成することです。これにより、.ファイル名が格納されているディレクトリ()のサイズが拡張されますが、ファイルサイズは拡張されません。ファイル名が格納されているディレクトリのサイズに関連付けられています)、*これらのファイル名が保存されるディレクトリの不一致):

% 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

したがって、ここでは空のディレクトリを6から2359296に変更します。一方、生成されたファイルはすべて空であるため、globのバージョンの総数はまだ0です。

おすすめ記事