Linuxのduコマンド:ファイルのディスク容量見積もり

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux の du (ディスク使用量) コマンドを探索します。これは、ディスク容量の使用量を見積もり、分析するための強力なツールです。急速に拡大するファイルサーバーの管理を担当するシステム管理者であると想像してみてください。あなたの使命は、大量のディスク容量を消費しているディレクトリとファイルを特定し、ストレージの利用率を最適化することです。du コマンドは、このディスク容量調査においてあなたの信頼できるツールとなります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/SystemInformationandMonitoringGroup -.-> linux/du("File Space Estimating") subgraph Lab Skills linux/du -.-> lab-219190{{"Linuxのduコマンド:ファイルのディスク容量見積もり"}} end

du の基本を理解する

du コマンドは、ディスク容量の使用状況を理解するための第一歩です。まずは、その基本的な機能を調べてみましょう。

まず、調査を行うプロジェクトディレクトリに移動しましょう。

cd ~/project

では、基本的な du コマンドを実行してみましょう。

du

ヒント: ファイルとフォルダはランダムに作成され、そのサイズもランダムです。そのため、実行するたびに結果が異なる場合があります。

次のような出力が表示されます。

0      ./documents/reports
0      ./documents
10240  ./backups
0      ./logs/archive
0      ./logs/system
5120   ./logs/application
5120   ./logs
15360  .

各行には、2つの情報が表示されます。

  1. ディスク使用量 (KB 単位)
  2. 対応するディレクトリのパス

最初は数字がわかりにくいかもしれません。これらはキロバイト (KB) 単位のディスク使用量を表しています。でも心配しないでください、もっと読みやすくすることができます!

-h (人間が読みやすい) オプションを付けてコマンドを実行してみましょう。

du -h

これで、次のような出力が表示されます。

0      ./documents/reports
0      ./documents
10M    ./backups
0      ./logs/archive
0      ./logs/system
5.0M   ./logs/application
5.0M   ./logs
15M    .

-h オプションは、サイズを人間が読みやすい形式 (キロバイトは K、メガバイトは M など) に変換します。これにより、私たち人間が一目で理解しやすくなります。

いくつか注意点があります。

  • 最後の . は現在のディレクトリ (この場合は ~/project) を表しています。
  • ディレクトリのディスク使用量には、そのすべてのサブディレクトリの使用量が含まれています。
  • 表示されるサイズは、セットアップスクリプトがランダムなファイルサイズを生成するため、若干異なる場合があります。

特定のディレクトリを調査する

基本的なことが理解できたので、特定のディレクトリについて詳しく調べてみましょう。大量のディスク容量を使用しているような logs ディレクトリに焦点を当てます。

まず、logs ディレクトリに移動しましょう。

cd ~/project/logs

では、du コマンドを使ってこのディレクトリを調べてみましょう。

du -h

次のような出力が表示されるかもしれません。

0      ./archive
0      ./system
5.0M   ./application
5.0M   .

これにより、logs ディレクトリ内の各サブディレクトリのディスク使用量が詳細に表示されます。でも、logs ディレクトリの合計使用量だけを見たい場合はどうすればいいでしょうか?

--max-depth オプションを使って、du がディレクトリ構造をどこまで深く調べるかを制限することができます。

du -h --max-depth=0

これにより、現在のディレクトリの合計使用量だけが出力されます。

5.0M   .

--max-depth=0 は、du に対してサブディレクトリを調べずに現在のディレクトリのみを表示するよう指示します。

直下のサブディレクトリのみを表示するには、--max-depth=1 を使用します。

du -h --max-depth=1

出力:

0      ./archive
0      ./system
5.0M   ./application
5.0M   .

これにより、どのサブディレクトリが最も多くのディスク容量を使用しているかがより明確にわかります。

--max-depth オプションは、深くネストされたディレクトリ構造を扱い、階層の特定のレベルに焦点を当てたい場合に特に便利です。

ディスク使用量のソートと分析

大量のディスク容量を使用しているサブディレクトリを特定できたので、次は結果をソートする方法を学びましょう。これにより、最も多くのディスク容量を消費しているディレクトリをすばやく特定することができます。

du コマンドと組み合わせて sort コマンドを使用します。sort コマンドに不慣れな場合は心配しないでください、動作方法を説明します。

まず、du の出力をサイズでソートしてみましょう。

du -h | sort -h

このコマンドは2つのことを行います。

  1. du -h: 人間が読みやすい形式でディスク使用量を表示するコマンドを実行します。
  2. |: これはパイプです。左側のコマンドの出力を受け取り、右側のコマンドの入力として渡します。
  3. sort -h: 人間が読みやすい形式のサイズに基づいて入力を数値的にソートします。

次のような出力が表示されるかもしれません。

0     ./archive
0     ./system
5.0M  .
5.0M  ./application

出力は小さい順にソートされています。しかし、多くの場合、最初に大きいディレクトリを見たいことがあります。順序を逆にするには、sort-r オプションを追加することができます。

du -h | sort -hr

出力:

5.0M  ./application
5.0M  .
0     ./system
0     ./archive

これで、logs フォルダ内のどのサブディレクトリが最も多くのディスク容量を使用しているかを降順で明確に確認できます。

直下のサブディレクトリのみを対象にしてソートするには、これまで学んだ手法を組み合わせることができます。

du -h --max-depth=1 | sort -hr

このコマンドは、現在のディレクトリの直下のサブディレクトリのみを表示し、ソートします。

コマンドラインの強力さは、単純なコマンドを組み合わせて複雑な操作を実行することにあります。dusort、そしてさまざまなオプションを組み合わせることで、すばやくディスク使用量を分析することができました!

最も大きなファイルを見つける

これまではディレクトリのサイズを調べてきました。では、大量のディスク容量を占有している特定のファイルを見つけたい場合はどうすればいいでしょうか?du コマンドは主にディレクトリに対して動作しますが、他のコマンドと組み合わせることで大きなファイルを見つけることができます。

du とともに find コマンドを使用します。find コマンドに不慣れな場合は心配しないでください、動作方法を説明します。

まず、プロジェクトディレクトリに戻りましょう。

cd ~/project

では、finddu を使って最も大きなファイルを見つけましょう。

find. -type f -exec du -h {} + | sort -hr | head -n 5

このコマンドは複雑に見えるかもしれませんが、分解して説明します。

  1. find. -type f: 現在のディレクトリ (.) とそのサブディレクトリ内のすべてのファイル (-type f) を検索します。
  2. -exec du -h {} +: 見つかった各ファイルに対して du -h を実行します。{} はファイル名に置き換えられ、+find にできるだけ多くのファイル名を du の各呼び出しに渡すよう指示します。
  3. sort -hr: 結果をサイズの逆順 (大きいものから) にソートします。
  4. head -n 5: 上位5つの結果のみを表示します。

次のような出力が表示されるかもしれません。

10M    ./backups/large_backup.bak
5.0M   ./logs/application/large_app_log.log
0      ./logs/system/placeholder.log
0      ./logs/archive/placeholder.log
0      ./logs/application/placeholder.log

この出力は、プロジェクトディレクトリ内の5つの最も大きなファイルとそのサイズを示しています。

特定のサイズより大きいファイルに絞り込むには、コマンドを変更することができます。1MB より大きいファイルを見つけてみましょう。

find. -type f -size +1M -exec du -h {} + | sort -hr

このコマンドは、1メガバイトより大きいファイルをフィルタリングするために -size +1M を追加しています。

これらのコマンドは、ディスク容量を解放しようとするときに非常に便利です。これらを使うことで、削除またはアーカイブの候補となりやすい大きなファイルをすばやく特定することができます。

ディスク使用量レポートの作成

ディスク容量の調査の最後のステップとして、プロジェクト全体のディレクトリに対する包括的なディスク使用量レポートを作成しましょう。このレポートは、調査結果をまとめ、チームに提示するのに役立ちます。

まず、プロジェクトディレクトリにいることを確認しましょう。

cd ~/project

では、du を使って詳細なレポートを作成し、ファイルに保存しましょう。

du -h --max-depth=2 | sort -hr > disk_usage_report.txt

このコマンドを分解して説明します。

  1. du -h --max-depth=2: 人間が読みやすい形式で、2階層までのディスク使用量を表示します。
  2. sort -hr: 結果をサイズの逆順 (大きいものから) にソートします。
  3. > disk_usage_report.txt: 出力を disk_usage_report.txt という名前のファイルに保存します。> はリダイレクト演算子と呼ばれ、通常は画面に表示される出力をファイルに「リダイレクト」します。

レポートを作成したので、その内容を確認しましょう。

cat disk_usage_report.txt

ディレクトリとそのサイズの包括的なリストが、大きい順にソートされて表示されるはずです。

最も大きなディレクトリの概要を取得するには、head コマンドを使って上位のエントリのみを表示することができます。

head -n 10 disk_usage_report.txt

これにより、プロジェクト内の10個の最も大きなディレクトリが表示されます。

このレポートは、プロジェクトのどの部分が最も多くのディスク容量を消費しているかを特定するための貴重なツールです。ストレージ使用量の最適化や、チームとのリソース割り当てに関する議論をサポートすることができます。

まとめ

この実験では、強力な du コマンドとそのディスク容量管理への応用について学びました。以下のことを学びました。

  1. 基本的な du コマンドを使ってディスク使用量を見積もる
  2. -h オプションを使って出力を人間が読みやすい形式にする
  3. --max-depth を使って特定のディレクトリを調査し、調査の深さを制限する
  4. ディスク使用量の結果をソートして分析する
  5. ディレクトリ内の最も大きなファイルを見つける
  6. 包括的なディスク使用量レポートを作成する

これらのスキルは、ストレージリソースを管理するシステム管理者や上級ユーザーにとって不可欠です。

この実験では触れていない du の追加オプションは以下の通りです。

  • -s: 各引数の合計のみを表示する
  • -c: 総合計を表示する
  • -a: ディレクトリだけでなくファイルのディスク使用量も表示する
  • --time: 各ディレクトリの最終更新時刻を表示する
  • --exclude=PATTERN: 指定されたパターンに一致するファイルまたはディレクトリを除外する