LinuxやmacOSなどのBash環境において、ディスク容量の管理はシステム管理や開発作業における重要なタスクの一つです。
サーバーのストレージが予期せず一杯になった際、どのディレクトリが容量を圧迫しているのかを迅速に特定する必要があります。
このような場面で最も頻繁に利用されるのが、ディスク使用量を表示するdu(Disk Usage)コマンドです。
本記事では、2026年現在の最新のシステム環境でも通用する、duコマンドの基本的な使い方から応用的な逆引きテクニックまでを詳しく解説します。
初心者の方からベテランのエンジニアまで、効率的なストレージ調査手法を身につけるためのガイドとして活用してください。
duコマンドの基本概念と標準的な動作
duコマンドは、ファイルやディレクトリが占有しているディスク容量を計測して表示するための標準的なコマンドラインツールです。
引数を指定せずに実行した場合、カレントディレクトリ以下のすべてのディレクトリとそのサブディレクトリのサイズを再帰的に表示します。
デフォルトの状態では、サイズは「1024バイト(1KB)単位」のブロック数として出力されるのが一般的です。
システムのファイルシステムがどのようにデータを保持しているかを正確に反映するため、実際のファイルサイズとわずかに異なる場合があります。
まずは、最もシンプルな実行例を確認してみましょう。
# 引数なしで実行
du
4 ./config
12 ./data/logs
24 ./data
40 .
このように、左側にサイズ、右側にパスが表示される形式が基本となります。
しかし、このデフォルト表示だけでは、大規模なディレクトリ構造を把握するのは困難です。
効率的な調査を可能にする主要オプション
duコマンドの真価は、豊富なオプションを組み合わせて出力をカスタマイズすることにあります。
ここでは、実務で日常的に使用される必須のオプションをいくつか紹介します。
人間が読みやすい形式で表示する (-h)
デフォルトのブロック単位表示では、巨大なファイルのサイズを一目で判断するのは非常に困難です。
-h(–human-readable)オプションを使用すると、サイズに応じてK(キロ)、M(メガ)、G(ギガ)といった単位を自動で付与してくれます。
# 人間が読みやすい形式で表示
du -h
4.0K ./config
12K ./data/logs
24K ./data
40K .
現代のテラバイト級のストレージを扱う環境では、このオプションはほぼ必須と言っても過言ではありません。
合計サイズのみを確認する (-s)
特定のディレクトリ配下の詳細な内訳ではなく、そのディレクトリ全体の合計サイズだけを知りたい場合があります。
そのような時は、-s(–summarize)オプションを利用してください。
# 指定したディレクトリの合計サイズのみを表示
du -sh /var/log
1.2G /var/log
このコマンドは、特定のプロジェクトフォルダがどれくらいの容量を占めているかを素早く把握するのに非常に便利です。
階層の深さを制限して表示する (-d / –max-depth)
再帰的にすべてのサブディレクトリを表示すると、出力結果が膨大になりすぎてしまいます。
-d(または --max-depth)オプションを使用することで、表示する階層の深さを指定できます。
# カレントディレクトリから1階層下のディレクトリまでを表示
du -h -d 1
4.0K ./config
24K ./data
40K .
特定の階層における容量の偏りを見つける際に、最も効果的な手法の一つです。
duコマンドのオプション一覧表
よく使われるオプションの機能を整理して以下の表にまとめました。
| オプション | 説明 |
|---|---|
-h | サイズを読みやすい単位(K, M, G)で表示する。 |
-s | 指定したディレクトリの合計値のみを表示する。 |
-a | ディレクトリだけでなく個別のファイルサイズも表示する。 |
-c | 最後にすべての合計(grand total)を表示する。 |
-d [数字] | 表示するディレクトリ構造の深さを指定する。 |
-x | 異なるファイルシステム(マウントポイント)を対象外にする。 |
【逆引き】目的別のduコマンド活用術
ここからは、実際の運用シーンでよく遭遇する課題を解決するための具体的なコマンド例を紹介します。
容量の大きい順に並び替えてトップ10を表示する
ストレージを圧迫している原因を突き止めるには、サイズの大きい順にソートするのが効率的です。
sortコマンドと組み合わせることで、ランキング形式で表示できます。
# サイズの大きい順にソートして上位10件を表示
# -hをsortで扱う場合は -hr を指定する
du -h -d 1 | sort -hr | head -n 10
50G .
30G ./backups
15G ./docker-volumes
4.0G ./images
...(省略)
「どこが重いのか」を一瞬で特定できるため、トラブルシューティングの定番コマンドです。
特定のディレクトリを除外して計測する
ログディレクトリやキャッシュディレクトリなど、あらかじめサイズが大きいと分かっている場所を除外したい場合があります。
その場合は、--excludeオプションを使用します。
# logディレクトリを除外して計測
du -sh --exclude="*.log" .
このオプションにより、ノイズとなるデータを除いて必要な情報だけに絞り込むことができます。
MB単位やGB単位で統一して表示する
-hオプションは便利ですが、単位が混在するため計算や比較がしにくいこともあります。
出力を特定の単位で固定したい場合は、-m(MB)や -g(GB)といったオプションが利用可能です。
# すべてMB単位で表示する
du -m -d 1
スクリプトで数値を処理する場合や、スプレッドシートに貼り付けて比較する際に役立ちます。
duコマンドを使用する際の高度な注意点
duコマンドの結果を正しく解釈するためには、いくつかの技術的な背景を理解しておく必要があります。
ファイルサイズとディスク上の占有サイズの違い
duコマンドが報告するのは「ファイルがディスク上で実際に占有している領域」であり、ファイルそのものの論理的なサイズではありません。
ファイルシステムは「ブロック」という単位でデータを管理しており、たとえ1バイトのファイルでも1ブロック分(例:4KB)の容量を消費します。
そのため、非常に小さなファイルが大量にあるディレクトリでは、実際のファイルサイズの合計よりも du の値が大幅に大きくなることがあります。
スパースファイル(疎なファイル)の扱い
仮想ディスクイメージなどの「スパースファイル」は、確保されたサイズに対して実際のデータが書き込まれていない部分をディスク消費しない仕組みを持っています。
ls -lで見えるサイズと duで見えるサイズに大きな開きがある場合は、このスパースファイルである可能性が高いです。
論理的なファイルサイズを確認したい場合は --apparent-size オプションを併用してください。
権限不足による計測漏れ
一般ユーザーで du を実行すると、読み取り権限のないディレクトリの内容を計算に含めることができません。
システム全体の正確な使用量を把握するには、sudo を利用して管理者権限で実行することが推奨されます。
# 管理者権限でシステム全体のログを確認
sudo du -sh /var/log/*
まとめ
duコマンドは、Bash環境におけるディスク管理の強力な味方です。
基本の -h や -s を覚えるだけでも十分有用ですが、-d による階層指定や sort との組み合わせをマスターすることで、調査のスピードは飛躍的に向上します。
ストレージ不足のアラートが鳴ってから慌てるのではなく、日頃からこれらのコマンドを活用してディレクトリ構造を把握しておくことが重要です。
今回紹介したオプションや逆引きテクニックを参考に、効率的なシステム運用を実現してください。
最後に、より詳細なオプションを知りたい場合は、常に man du コマンドで最新のマニュアルを確認する習慣をつけることをおすすめします。
