Linuxで特定のサイズの空ファイルを作成することが多々あります。例えば、ストレージ使用率の閾値監視や、ファイルシステムのパフォーマンス評価など。「dd」を使うことを覚えていても、「dd if of」・・・の続きってなんだっけ?と全てのオプションを覚えておくのは大変。
この記事では、ddコマンドを使用してサイズを指定して空ファイルを作成する方法と、その他のddコマンドの便利な使い方を解説します。
ddコマンド基本
ddコマンドは、ファイルの変換とコピーを行うLinuxの便利ツールです。空ファイルの作成以外にも、様々な用途で使用することができます。
基本的な構文
dd if=入力元 of=出力先 bs=ブロックサイズ count=ブロック数
サイズを指定して空ファイルを作成
/dev/zero
を入力元として使用if=/dev/zero
- 出力先のファイル名を指定
of=ファイルサイズ
- ブロックサイズ(bs)とブロック数(count)を設定
bs=1M count=50
実行例
50MBの空ファイルを作成する場合
dd if=/dev/zero of=50mb.file bs=1M count=50
bsとcountの使い分け方法
bsとcount、どっちを大きくすれば迷う場合は、以下を参考にしてみてください。
- bs (ブロックサイズ) は1回の処理するデータ量を指定。
- count はbsで指定したサイズのブロックを何回コピーするかを指定。
- 作成するファイルの総サイズは bs * count で決まります。
使い分けのポイント
パフォーマンス | bsを小さくcountを大きくすると、メモリ消費が少なくなるため処理が速くなる傾向があります。 |
ファイルシステムの最適化 | bsをファイルシステムのブロックサイズ(多くの場合4096バイト)に合わせると、処理効率が上がることがあります。 |
大容量ファイルの作成 | 大きなファイルを作成する場合、bsを1MBなど適度なサイズに設定し、countで必要な回数を指定すると効率的です。 |
メモリ使用量の制御 | bsが大きすぎるとメモリを大量に消費し、パフォーマンスが低下する可能性があります。 |
精密なサイズ指定 | bsを小さな単位(例:1バイト)に設定し、countで正確なバイト数を指定できます |
用途に応じてbsとcountを使い分けてみてください。
ddコマンドの便利な使い方
- ディスクイメージのバックアップ:
dd if=/dev/sda of=/path/to/disk.img
- ディスクデータの消去:
dd if=/dev/zero of=/dev/sda
- ネットワーク経由でのディスクバックアップ:
ssh user@remote_host "dd if=/dev/sda | gzip -1 -" | dd of=backup.img.gz
- MBR(マスターブートレコード)のバックアップ:
dd if=/dev/sda of=mbr.backup bs=512 count=1
- データ転送速度の表示:
dd if=/dev/urandom | pv | dd of=/dev/null
ddで空ファイルを作成する際の注意点
- 大きなファイルを作成する場合、実行する前にディスク容量には十分に注意してください。
df -h
などで、全体容量を確認する癖をつけましょう。 - オプションの指定ミスをすると、重要なデータを上書きしてしまう可能性がありますので、必ず全く影響のないディレクトリでテストをしてから実行しましょう。
- 実行前には必ずコマンドを何度も確認し、特に出力先(of=)の指定には注意してください。
まとめ
ddコマンドは、サイズ指定の空ファイル作成だけでなく、ディスクのバックアップやデータ消去など、様々な用途に活用できるとても便利なツールです。ただし、なんでもできる反面、慎重に使用する必要があります。
思いのほか空ファイルを作成するシーンは多いものです。ぜひ参考にしてみてください。