はじめに
この実験では、du(Disk Usage、ディスク使用量)コマンドを使用して、Linux システムのディスク使用量を推定および分析する方法を学びます。ディスク使用量の管理は、システム管理者や Linux ユーザーにとって基本的なスキルです。du コマンドを使用すると、システム上のファイルやディレクトリがどれだけのディスク容量を使用しているかを確認できます。
この実験の終了時には、様々なオプションを使用して du コマンドを効果的に使い、ディスク使用量を分析し、大きなファイルやディレクトリを特定し、より効率的にストレージ容量を管理できるようになります。
du コマンドの基本的な使い方を理解する
du コマンドは、Linux システムでファイルの使用容量を推定するために使用されます。このステップでは、du コマンドの基本的な構文と出力について学びます。
まず、いくつかのサンプルファイルを含むディレクトリ構造を作成しましょう。
LabEx の仮想マシン (VM) 環境でターミナルを開きます。
以下のコマンドを使用して、プロジェクトのディレクトリ構造を作成します。
mkdir -p ~/project/data
cd ~/project/data
echo "This is file 1 content" > file1.txt
echo "This is file 2 content" > file2.txt
echo "This is a larger file with more content" > file3.txt
- ここで、基本的な
duコマンドを使用して、これらのファイルのディスク使用量を確認しましょう。
du ~/project/data
次のような出力が表示されます。
4 /home/labex/project/data
表示される数字は、キロバイト (KB) 単位のディスク使用量です。各ファイルやディレクトリは、少なくとも 4 KB のディスク領域を占有します。これは、ほとんどのファイルシステムで一般的な最小割り当て単位 (ブロックサイズ) です。
- 個々のファイルのサイズを確認するには、ファイルパスを指定することができます。
du ~/project/data/file1.txt ~/project/data/file2.txt ~/project/data/file3.txt
ファイルシステムのブロックサイズ割り当てのため、小さなファイルでも少なくとも 4 KB のディスク領域を占有することに気づくでしょう。
人間が読みやすい形式と要約オプションの使用
前のステップでは、du コマンドの基本的な使い方を学びました。しかし、キロバイト単位でディスク使用量を読むことは、特に大きなファイルやディレクトリの場合、必ずしも便利ではありません。このステップでは、出力をより読みやすくするためのオプションの使い方を学びます。
-h オプション(人間が読みやすい形式)
-h オプションは、サイズを人間が読みやすい形式(KB、MB、GB など)で表示し、ファイルサイズを理解しやすくします。
du -h ~/project/data
出力例:
4.0K /home/labex/project/data
-s オプション(要約)
-s オプションは、各サブディレクトリの使用量を表示する代わりに、ディスクの総使用量の要約を提供します。
du -s ~/project/data
出力例:
4 /home/labex/project/data
オプションの組み合わせ:-sh
これらのオプションを組み合わせることで、より有用な出力を得ることができます。まず、より大きなファイルを作成してから、組み合わせたオプションを使用しましょう。
cd ~/project/data
## Create a 1MB file filled with zeros
dd if=/dev/zero of=largefile.bin bs=1M count=1
出力例:
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00302182 s, 347 MB/s
ここで、組み合わせたオプションでディスク使用量を確認します。
du -sh ~/project/data
出力例:
1.1M /home/labex/project/data
また、これらのオプションを使用して個々のファイルのサイズも確認しましょう。
du -sh ~/project/data/*
出力例:
4.0K /home/labex/project/data/file1.txt
4.0K /home/labex/project/data/file2.txt
4.0K /home/labex/project/data/file3.txt
1.0M /home/labex/project/data/largefile.bin
人間が読みやすい形式を使用すると、特に大きなファイルやディレクトリを扱う際に、ファイルサイズをはるかに簡単に理解できます。
du を使ったディレクトリ構造の分析
このステップでは、より複雑なディレクトリ構造のディスク使用量を分析する方法を学びます。異なるファイルサイズの入れ子になったディレクトリを作成し、du を使って分析します。
入れ子になったディレクトリ構造の作成
まず、より複雑なディレクトリ構造を作成しましょう。
mkdir -p ~/project/data/docs ~/project/data/images ~/project/data/backups
次に、これらのディレクトリにいくつかのファイルを追加します。
## Add text files to docs directory
cd ~/project/data/docs
echo "Document 1 content" > doc1.txt
echo "Document 2 content" > doc2.txt
## Create larger files in images directory
cd ~/project/data/images
dd if=/dev/zero of=image1.jpg bs=500K count=1
dd if=/dev/zero of=image2.jpg bs=300K count=1
## Create a backup file
cd ~/project/data/backups
dd if=/dev/zero of=backup.tar bs=2M count=1
特定のディレクトリの分析
ここで、du コマンドを使って特定のディレクトリを分析しましょう。
## Check the size of the docs directory
du -sh ~/project/data/docs
## Check the size of the images directory
du -sh ~/project/data/images
## Check the size of the backups directory
du -sh ~/project/data/backups
各ディレクトリに含まれるファイルによって、それぞれ異なるサイズが表示されることがわかります。
ディレクトリ構造全体の分析
サブディレクトリを含むディレクトリ構造全体のディスク使用量を確認するには、次のコマンドを使用します。
du -h ~/project/data
これにより、各サブディレクトリのサイズと最後に合計サイズが表示されます。
--max-depth オプションの使用
特定のディレクトリ階層のディスク使用量を確認したい場合があります。--max-depth オプションはこのような場合に役立ちます。
du -h --max-depth=1 ~/project/data
これにより、~/project/data の直下のサブディレクトリのみが表示され、ディレクトリツリーの奥深くまでは表示されません。
出力例:
8.0K /home/labex/project/data/docs
804K /home/labex/project/data/images
2.0M /home/labex/project/data/backups
3.9M /home/labex/project/data
このコマンドは、どのトップレベルのディレクトリが最も多くのディスク容量を消費しているかを特定したい場合に特に有用です。
高度な du コマンドの使用方法
この最後のステップでは、du コマンドを使ってディレクトリをサイズでソートしたり、特定のファイルを除外したり、大きなファイルに焦点を当てたりするいくつかの高度なテクニックを学びます。
ディレクトリをサイズでソートする
よくあるタスクの 1 つは、最も大きなディレクトリやファイルを見つけることです。これを実現するには、du と sort を組み合わせることができます。
du -h ~/project/data | sort -h
sort の -h オプションは、人間が読みやすい形式のサイズを正しく理解してソートするようにします。出力は小さい順にソートされます。
大きい順にソートするには、sort に -r(逆順)オプションを追加します。
du -h ~/project/data | sort -hr
出力例:
3.9M /home/labex/project/data
2.0M /home/labex/project/data/backups
804K /home/labex/project/data/images
8.0K /home/labex/project/data/docs
4.0K /home/labex/project/data/docs/doc2.txt
4.0K /home/labex/project/data/docs/doc1.txt
特定のファイルタイプを検索する
find コマンドを du と組み合わせて、特定のファイルタイプのサイズを計算することができます。
## Find all jpg files and check their sizes
find ~/project/data -name "*.jpg" -exec du -h {} \;
このコマンドは、~/project/data ディレクトリ内の .jpg 拡張子のすべてのファイルを検索し、それぞれに対して du -h を実行します。
ディレクトリを除外する
時には、ディスク使用量の計算から特定のディレクトリを除外したいことがあります。--exclude オプションを使用することができます。
du -h --exclude="backups" ~/project/data
これにより、~/project/data 内のすべてのデータのディスク使用量が計算されますが、backups ディレクトリは除外されます。
ディスクの総使用量を取得する
ディレクトリとそのすべてのサブディレクトリの総使用量(要約)のみを取得するには、次のコマンドを使用します。
du -sh ~/project/data
出力例:
3.9M /home/labex/project/data
これは、ディレクトリツリーの総サイズにのみ関心があり、内訳は必要ない場合に特に有用です。
ファイルの更新日時によるディスク使用量の確認
これを実証するために、異なるタイムスタンプのいくつかのファイルを作成しましょう。
## Create a directory for this example
mkdir -p ~/project/data/timeline
cd ~/project/data/timeline
## Create files with different timestamps
echo "Old file" > old_file.txt
echo "Recent file" > recent_file.txt
touch -d "1 month ago" old_file.txt
ここで、find と du を組み合わせて、特定の期間内に変更されたファイルのディスク使用量を確認することができます。
## Find files modified in the last 7 days and check their sizes
find ~/project/data -type f -mtime -7 -exec du -h {} \;
これにより、過去 7 日間に変更されたすべてのファイルのサイズが表示されます。
これらの高度なテクニックは、ディスクスペースがどこで使用されているかを特定し、ストレージを解放する機会を見つけることで、Linux システムのディスクスペースを効果的に管理するのに役立ちます。
まとめ
この実験では、Linux システムにおけるディスクスペースの使用量を見積もり、分析するために du コマンドを使用する方法を学びました。以下の内容を学びました。
- ファイルやディレクトリのディスク使用量を確認するための
duコマンドの基本的な使い方 - 人間が読みやすい形式の出力に
-hオプションを、要約情報に-sオプションを使用する方法 - 入れ子になったサブディレクトリを含む複雑なディレクトリ構造のディスク使用量を分析する方法
- サイズでソートする、ファイルタイプでフィルタリングする、ディレクトリを除外する、更新時間でファイルを確認するなどの高度なテクニック
これらのスキルは、Linux システムにおける効果的なディスクスペース管理に不可欠です。du コマンドを使用することで、大量のディスクスペースを消費する大きなファイルやディレクトリを特定することができ、ストレージ管理に関する適切な判断を下すのに役立ちます。
この実験で得た知識を活用して、パーソナルコンピュータ、サーバー、またはクラウドインスタンスなど、あらゆる Linux 環境で自信を持ってディスク使用量を監視し、分析することができます。



