8t's BBR

よくつまったあれこれをメモ

duコマンドでのオプションで表示される値の違い

ディレクトリ内のファイル容量を調べるときによく使っていたduコマンドですが、いつもは適当に「あーこれくらいね、りょーかい」とか言っていたけど、ちゃんとわかっていなかった。


「duコマンドで[-b]オプションを指定した時と[-k]オプションを指定したときで表示される値が全然違くないか・・・?」

当たり前といえば当たり前なんだけど、変に迷走して悩みまくった話。



おそらくduコマンドの正しい定義は、ディレクトリのディスク使用量の表示」になるかと思います。


ポイントは「データサイズ」ではなくて「ディスク使用量」というところです。(なぜこの違いに早く気づかなかったのか・・)
つまり、特にオプションを指定しない場合は「そのディレクトリがどれだけディスクを喰っているのか」を表示するということです。



そして、[-b]オプションは「デフォルトのブロックサイズを無視して、バイト単位でサイズを表示する」といったものです。

前半が重要です。つまり、[-b]オプションを指定することで、「そのディレクトリがどれだけディスクを喰っているかバイト単位で表示する」のではなくて、「実際のデータサイズバイト単位で表示する」のです。


それに対して[-k]or[-m]オプションは「キロ(orメガ)バイト単位で表示する」だけです。



たとえば、700バイトのデータがあったとして、ディスクに書かれるときは4kBなどブロックサイズごとに書き込まれます。
ブロックサイズが4kBなら、10バイトのデータであっても3900バイトのデータであっても4kBの容量を使ってディスクに書き込まれます。





そら[-b]と[-k]オプションでは表示される値が違うよな・・・