Linuxでファイルやディレクトリがどれくらい容量を使っているか確認したいときは、duコマンドを使用します。
サーバーを運用していると、ログファイルやバックアップファイルが増えて、いつの間にかディスク容量を圧迫していることがあります。
そのようなときにduコマンドを使うと、特定のファイルやディレクトリが実際にどれくらいのディスク容量を使用しているか確認できます。
この記事では、Linux初心者でも実際に使えるように、duコマンドの基本構文、du -shの使い方、ディレクトリごとの容量確認、容量の大きいファイルを探す方法、dfコマンドとの違い、よくあるエラーまで実例付きで解説します。
- duコマンドとは
- duコマンドの基本構文
- 人間が読みやすい単位で表示する方法
- ディレクトリ全体の合計容量だけを表示する方法
- 現在のディレクトリの容量を確認する方法
- 複数のディレクトリ容量をまとめて確認する方法
- ファイルの容量を確認する方法
- ファイルも含めて一覧表示する方法
- 階層の深さを指定して表示する方法
- 容量の大きいディレクトリを探す方法
- 容量の大きいファイルを探す方法
- 合計容量を最後に表示する方法
- 見かけのサイズを表示する方法
- duとls -lhの違い
- duとdfコマンドの違い
- 容量不足を調査する基本手順
- 同じファイルシステム内だけを集計する方法
- 隠しファイルを含めて確認する方法
- duコマンドの主なオプション
- 特定のファイルやディレクトリを除外する方法
- duコマンドでよく使う実用例
- duコマンドでよくあるエラー
- よくある質問
- まとめ
duコマンドとは
duは、ファイルやディレクトリのディスク使用量を表示するLinuxコマンドです。
duは「disk usage」の略で、指定したファイルやディレクトリが、ディスク上でどれくらいの容量を使っているかを確認できます。
主に次のような場面で使います。
- ディレクトリの容量を確認したいとき
- ログファイルがどれくらい増えているか確認したいとき
- 容量不足の原因を探したいとき
- バックアップ対象の容量を見積もりたいとき
- サーバー内で大きいファイルやディレクトリを探したいとき
特にVPSやLinuxサーバーでは、容量不足の調査でよく使う基本コマンドです。
duコマンドの基本構文
duコマンドの基本構文は次のとおりです。
du [オプション] ファイルまたはディレクトリ
たとえば、/var/logディレクトリの容量を確認する場合は次のように実行します。
du /var/log
指定したディレクトリ配下の容量が表示されます。
ただし、オプションなしでは数値の単位が分かりにくいため、実際には-hや-sと組み合わせて使うことが多いです。
人間が読みやすい単位で表示する方法
-hオプションを使うと、容量をKB、MB、GBなどの読みやすい単位で表示できます。
du -h /var/log
実行結果の例です。
4.0K /var/log/private
12K /var/log/nginx
24M /var/log
-hは「human-readable」の意味で、容量確認では非常によく使います。
ディレクトリ全体の合計容量だけを表示する方法
ディレクトリ配下の細かい内訳ではなく、合計容量だけを表示したい場合は-sを使います。
du -s /var/log
読みやすい単位で表示する場合は、-hと組み合わせます。
du -sh /var/log
実行結果の例です。
24M /var/log
du -shは、Linuxでディレクトリ容量を確認するときの定番コマンドです。
現在のディレクトリの容量を確認する方法
現在いるディレクトリ全体の容量を確認したい場合は、対象に.を指定します。
du -sh .
実行結果の例です。
128M .
.は現在のディレクトリを意味します。
作業ディレクトリやプロジェクトフォルダの容量を確認したいときに便利です。
複数のディレクトリ容量をまとめて確認する方法
複数のディレクトリを指定すると、それぞれの容量をまとめて確認できます。
du -sh /var/log /home /tmp
実行結果の例です。
24M /var/log
1.8G /home
320M /tmp
どのディレクトリが容量を多く使っているか、ざっくり比較したいときに使えます。
ファイルの容量を確認する方法
duはディレクトリだけでなく、ファイルにも使用できます。
du -h sample.log
実行結果の例です。
8.0K sample.log
ファイルサイズを確認するだけならls -lhでも可能ですが、duではディスク上で実際に使用している容量を確認できます。
ファイルも含めて一覧表示する方法
通常のduは、ディレクトリ単位の表示が中心です。
ファイルも含めて表示したい場合は-aを使用します。
du -ah /var/log
実行結果の例です。
4.0K /var/log/syslog
8.0K /var/log/auth.log
12K /var/log/nginx/access.log
24M /var/log
どのファイルが容量を使っているか調べたい場合に便利です。
階層の深さを指定して表示する方法
ディレクトリの階層が深い場合、du -hだけでは出力が多くなりすぎます。
その場合は、--max-depthを使って表示する階層を制限します。
du -h --max-depth=1 /var
実行結果の例です。
24M /var/log
120M /var/cache
8.0K /var/tmp
144M /var
--max-depth=1を指定すると、指定したディレクトリ直下の容量を確認できます。
GNU版のduでは、短い形式として-dを使える環境もあります。
du -h -d 1 /var
容量の大きいディレクトリを探す方法
容量不足の原因を探す場合は、duとsortを組み合わせます。
du -h --max-depth=1 /var | sort -h
容量が小さい順に並びます。
大きい順に並べたい場合は-rを追加します。
du -h --max-depth=1 /var | sort -hr
実行結果の例です。
144M /var
120M /var/cache
24M /var/log
8.0K /var/tmp
このようにすると、どのディレクトリが容量を使っているか分かりやすくなります。
容量の大きいファイルを探す方法
ファイルも含めて容量の大きい順に表示したい場合は、-aを使います。
du -ah /var/log | sort -hr | head -n 10
このコマンドでは、/var/log配下で容量が大きいものを上位10件表示します。
ログファイルが肥大化している場合の調査に便利です。
合計容量を最後に表示する方法
-cオプションを使うと、指定した複数の対象の合計容量を最後に表示できます。
du -ch file1.log file2.log file3.log
実行結果の例です。
4.0K file1.log
8.0K file2.log
12K file3.log
24K total
複数ファイルや複数ディレクトリの合計容量を確認したい場合に便利です。
見かけのサイズを表示する方法
duは通常、ディスク上で実際に使用している容量を表示します。
一方、ファイルの見かけ上のサイズを表示したい場合は、--apparent-sizeを使用します。
du -h --apparent-size sample.log
通常のduと--apparent-sizeでは、結果が異なる場合があります。
特にスパースファイルやブロック割り当ての関係で、見かけのサイズと実際のディスク使用量が一致しないことがあります。
duとls -lhの違い
ファイルサイズを確認するコマンドとして、ls -lhもよく使われます。
ls -lh sample.log
ls -lhは、ファイルの見かけ上のサイズを表示します。
一方、duはディスク上で実際に使用している容量を表示します。
| コマンド | 確認できる内容 |
|---|---|
ls -lh |
ファイルの見かけ上のサイズ |
du -h |
ディスク上で実際に使用している容量 |
通常のファイルでは近い値になることが多いですが、スパースファイルなどでは差が出ることがあります。
duとdfコマンドの違い
duとよく混同されるコマンドにdfがあります。
duはファイルやディレクトリごとの使用量を確認するコマンドです。
dfはファイルシステム全体の空き容量や使用率を確認するコマンドです。
| コマンド | 主な用途 | 例 |
|---|---|---|
du |
ファイル・ディレクトリごとの使用量を確認する | du -sh /var/log |
df |
ディスク全体の空き容量を確認する | df -h |
容量不足の調査では、まずdf -hでどのファイルシステムがいっぱいか確認し、その後duでどのディレクトリが原因か調べる流れがよく使われます。
容量不足を調査する基本手順
サーバーで容量不足が疑われる場合は、次の順番で確認すると分かりやすいです。
1. ディスク全体の使用率を確認する
df -h
どのファイルシステムの使用率が高いか確認します。
2. 大きいディレクトリを探す
du -h --max-depth=1 / | sort -hr
ルート直下で容量が大きいディレクトリを探します。
3. さらに下の階層を調べる
du -h --max-depth=1 /var | sort -hr
容量が大きいディレクトリの中をさらに調べます。
4. 大きいファイルを探す
du -ah /var/log | sort -hr | head -n 20
容量を使っているファイルを上位から確認します。
同じファイルシステム内だけを集計する方法
-xオプションを使うと、別のファイルシステムへまたがらずに集計できます。
du -xh /
マウントされた別ディスクやネットワークストレージを除外して確認したい場合に便利です。
サーバーで/mntや/backupなどに別ディスクをマウントしている場合、意図せず大きな領域まで集計してしまうことを防げます。
隠しファイルを含めて確認する方法
現在のディレクトリ全体の容量を確認する場合は、次のコマンドで隠しファイルも含めて集計できます。
du -sh .
.は現在のディレクトリ全体を表すため、ドットで始まる隠しファイルや隠しディレクトリも含まれます。
一方、*を使う場合は、通常のシェル設定では隠しファイルが含まれないことがあります。
du -sh *
隠しファイルも確実に含めたい場合は、対象指定に注意しましょう。
duコマンドの主なオプション
| オプション | 説明 |
|---|---|
-h |
KB、MB、GBなど読みやすい単位で表示する |
-s |
合計だけを表示する |
-a |
ファイルも含めて表示する |
-c |
最後に合計を表示する |
--max-depth=N |
表示する階層の深さを指定する |
-d N |
表示する階層の深さを指定する |
--apparent-size |
見かけ上のサイズを表示する |
-x |
同じファイルシステム内だけを集計する |
--exclude=PATTERN |
指定したパターンを除外する |
--help |
ヘルプを表示する |
--version |
バージョン情報を表示する |
特定のファイルやディレクトリを除外する方法
--excludeオプションを使うと、指定したパターンを除外して集計できます。
du -h --exclude="*.log" /var
この例では、.logで終わるファイルを除外して容量を集計します。
キャッシュや一時ファイルを除外して容量を見たい場合に便利です。
duコマンドでよく使う実用例
ディレクトリの合計容量を確認する
du -sh /var/log
現在のディレクトリ配下を1階層だけ確認する
du -h --max-depth=1 .
容量が大きい順に表示する
du -h --max-depth=1 . | sort -hr
大きいファイル上位10件を表示する
du -ah . | sort -hr | head -n 10
複数ディレクトリの合計を表示する
du -ch /var/log /tmp /home
同じファイルシステムだけを対象にする
du -xh /
duコマンドでよくあるエラー
Permission denied
du: cannot read directory '/var/log/private': Permission denied
対象ディレクトリを読み取る権限がない場合に表示されます。
必要に応じてsudoを付けて実行します。
sudo du -sh /var/log
ただし、不要にsudoを使うのではなく、どのディレクトリを調査しているか確認してから実行しましょう。
No such file or directory
du: cannot access 'sample': No such file or directory
指定したファイルやディレクトリが存在しない場合に表示されます。
pwd
ls -l
現在のディレクトリやファイル名を確認してください。
出力が多すぎる
du -h /のように大きな範囲を指定すると、出力が非常に多くなることがあります。
その場合は--max-depthを使って階層を制限します。
du -h --max-depth=1 /
duとdfの結果が合わない
duとdfでは見ている対象が違うため、結果が完全に一致しないことがあります。
dfはファイルシステム全体の使用量、duは指定したファイルやディレクトリ配下の使用量を集計します。
また、削除済みでもプロセスが開いたままのファイルなどがある場合、dfでは使用量が残って見えることがあります。
よくある質問
duコマンドは何に使いますか?
ファイルやディレクトリがディスク上でどれくらい容量を使っているか確認するために使います。
ディレクトリの合計容量だけを表示するには?
-sと-hを組み合わせます。
du -sh ディレクトリ名
現在のディレクトリの容量を確認するには?
du -sh .
.は現在のディレクトリを意味します。
容量の大きいファイルを探すには?
du、sort、headを組み合わせます。
du -ah . | sort -hr | head -n 10
duとdfの違いは何ですか?
duはファイルやディレクトリごとの使用量を確認します。dfはファイルシステム全体の空き容量や使用率を確認します。
du -shの意味は何ですか?
-sは合計だけを表示、-hは読みやすい単位で表示するオプションです。
隠しファイルも含めて容量確認できますか?
du -sh .のように現在のディレクトリ全体を対象にすれば、隠しファイルや隠しディレクトリも含まれます。
Permission deniedが出たらどうすればよいですか?
読み取り権限がないディレクトリを調査している可能性があります。必要に応じてsudoを付けます。
sudo du -sh /var/log
UbuntuやCentOS Streamでも使えますか?
はい。Ubuntu、Debian、CentOS Stream、Rocky Linux、AlmaLinuxなど、一般的なLinuxディストリビューションで利用できます。
まとめ
duコマンドは、Linuxでファイルやディレクトリのディスク使用量を確認するためのコマンドです。
ディレクトリの合計容量を確認する場合は、次のように実行します。
du -sh /var/log
現在のディレクトリ配下を1階層だけ確認する場合は、次のように実行します。
du -h --max-depth=1 .
容量の大きいファイルを探す場合は、次のようにsortやheadと組み合わせます。
du -ah . | sort -hr | head -n 10
duはファイルやディレクトリごとの使用量を確認するコマンドで、dfはファイルシステム全体の空き容量を確認するコマンドです。
容量不足の調査では、まずdf -hで全体を確認し、その後duで原因となるディレクトリやファイルを絞り込む流れが基本です。
LinuxサーバーやVPSを運用するなら、du -sh、du -h --max-depth=1、du -ah . | sort -hr | headの3つは覚えておくと便利です。




コメント