duコマンドとは?Linuxでファイル・ディレクトリの容量を確認する方法

Linux

Linuxでファイルやディレクトリがどれくらい容量を使っているか確認したいときは、duコマンドを使用します。

サーバーを運用していると、ログファイルやバックアップファイルが増えて、いつの間にかディスク容量を圧迫していることがあります。

そのようなときにduコマンドを使うと、特定のファイルやディレクトリが実際にどれくらいのディスク容量を使用しているか確認できます。

この記事では、Linux初心者でも実際に使えるように、duコマンドの基本構文、du -shの使い方、ディレクトリごとの容量確認、容量の大きいファイルを探す方法、dfコマンドとの違い、よくあるエラーまで実例付きで解説します。

  1. duコマンドとは
  2. duコマンドの基本構文
  3. 人間が読みやすい単位で表示する方法
  4. ディレクトリ全体の合計容量だけを表示する方法
  5. 現在のディレクトリの容量を確認する方法
  6. 複数のディレクトリ容量をまとめて確認する方法
  7. ファイルの容量を確認する方法
  8. ファイルも含めて一覧表示する方法
  9. 階層の深さを指定して表示する方法
  10. 容量の大きいディレクトリを探す方法
  11. 容量の大きいファイルを探す方法
  12. 合計容量を最後に表示する方法
  13. 見かけのサイズを表示する方法
  14. duとls -lhの違い
  15. duとdfコマンドの違い
  16. 容量不足を調査する基本手順
    1. 1. ディスク全体の使用率を確認する
    2. 2. 大きいディレクトリを探す
    3. 3. さらに下の階層を調べる
    4. 4. 大きいファイルを探す
  17. 同じファイルシステム内だけを集計する方法
  18. 隠しファイルを含めて確認する方法
  19. duコマンドの主なオプション
  20. 特定のファイルやディレクトリを除外する方法
  21. duコマンドでよく使う実用例
    1. ディレクトリの合計容量を確認する
    2. 現在のディレクトリ配下を1階層だけ確認する
    3. 容量が大きい順に表示する
    4. 大きいファイル上位10件を表示する
    5. 複数ディレクトリの合計を表示する
    6. 同じファイルシステムだけを対象にする
  22. duコマンドでよくあるエラー
    1. Permission denied
    2. No such file or directory
    3. 出力が多すぎる
    4. duとdfの結果が合わない
  23. よくある質問
    1. duコマンドは何に使いますか?
    2. ディレクトリの合計容量だけを表示するには?
    3. 現在のディレクトリの容量を確認するには?
    4. 容量の大きいファイルを探すには?
    5. duとdfの違いは何ですか?
    6. du -shの意味は何ですか?
    7. 隠しファイルも含めて容量確認できますか?
    8. Permission deniedが出たらどうすればよいですか?
    9. UbuntuやCentOS Streamでも使えますか?
  24. まとめ

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

容量の大きいディレクトリを探す方法

容量不足の原因を探す場合は、dusortを組み合わせます。

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の結果が合わない

dudfでは見ている対象が違うため、結果が完全に一致しないことがあります。

dfはファイルシステム全体の使用量、duは指定したファイルやディレクトリ配下の使用量を集計します。

また、削除済みでもプロセスが開いたままのファイルなどがある場合、dfでは使用量が残って見えることがあります。

よくある質問

duコマンドは何に使いますか?

ファイルやディレクトリがディスク上でどれくらい容量を使っているか確認するために使います。

ディレクトリの合計容量だけを表示するには?

-s-hを組み合わせます。

du -sh ディレクトリ名

現在のディレクトリの容量を確認するには?

du -sh .

.は現在のディレクトリを意味します。

容量の大きいファイルを探すには?

dusortheadを組み合わせます。

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 .

容量の大きいファイルを探す場合は、次のようにsortheadと組み合わせます。

du -ah . | sort -hr | head -n 10

duはファイルやディレクトリごとの使用量を確認するコマンドで、dfはファイルシステム全体の空き容量を確認するコマンドです。

容量不足の調査では、まずdf -hで全体を確認し、その後duで原因となるディレクトリやファイルを絞り込む流れが基本です。

LinuxサーバーやVPSを運用するなら、du -shdu -h --max-depth=1du -ah . | sort -hr | headの3つは覚えておくと便利です。

コメント

タイトルとURLをコピーしました