Linux
UNIX
du
df

duで表示されるディレクトリサイズが親ディレクトリと子ディレクトリで一致しない場合

df すると普通に危ない感じになっていたので原因を探ろうと du します。

$ pwd

/foo
$ du -sh ./* | sort -hr
823G ./bar
147G ./abc
121G ./def
115G ./ghi

まあ、823GBも使用している bar が怪しいですね。ここから見てみます。

$ cd bar

$ pwd
/foo/bar
$ sudo du -sh ./* | sort -hr
120G ./aaa
18G ./bbb
10G ./ccc

823GB = 120GB + 18GB + 10GB ………?

何故か一致しません。


原因: duは隠しディレクトリのサイズを表示しない

duコマンドは通常、 . から始まる隠しファイル・隠しディレクトリのサイズを表示しないため、先程の例において2回目の実行結果では隠しディレクトリのサイズが含まれていません。

以下のようにすれば隠しディレクトリを含めたファイルサイズが表示されます。

$ du -sh .[^.]*/ ./* | sort -hr