ブロック単位でファイルのコピーと変換:ddコマンド
Linuxのシステム管理やデータ管理において、dd
コマンドは非常に強力で多用途なツールとして知られています。このコマンドは、ファイルやディスクデバイスのコピーや変換をブロック単位で行うことができ、システムのバックアップ、データの復元、ディスクのクローン作成など、さまざまなシナリオで利用されます。
dd
コマンドは、その柔軟性と精度から、システム管理者にとって不可欠なツールの一つです。しかし、その強力さゆえに、使用方法を誤るとデータの損失やシステムの破損につながる可能性もあります。
ddコマンドの概要
「dd
」コマンドは、指定された入力ファイル(またはデバイス)からデータを読み取り、それを指定された出力ファイル(またはデバイス)に書き込むためのユーティリティです。データのコピーや変換をブロック単位で行うことができ、ディスクイメージの作成、データのバックアップ、ディスクの書き込み速度テストなどに広く使用されます。
主なオプションと説明
オプション | 説明 |
---|---|
if | 入力ファイル(input file)を指定します。デフォルトは標準入力です。 |
of | 出力ファイル(output file)を指定します。デフォルトは標準出力です。 |
bs | ブロックサイズ(block size)を指定します。デフォルトは512バイトです。 |
count | コピーするブロックの数を指定します。 |
skip | 入力ファイルの先頭から読み飛ばすブロック数を指定します。 |
seek | 出力ファイルの先頭から書き飛ばすブロック数を指定します。 |
conv | データ変換オプションを指定します。例: conv=notrunc (出力ファイルを切り詰めない)、conv=noerror (エラーを無視して続行する)、conv=sync (入力データをブロックサイズにパディングする) |
コマンドの使用例と解説
1.基本的なファイルコピー
「inputfile
」から「outputfile
」にデータをコピーします。ブロックサイズはデフォルトの512バイトが使用されます。
dd if=inputfile of=outputfile
2.ブロックサイズとコピーするブロック数の指定
ブロックサイズを1MBに設定し、100ブロック分のデータをコピーします。つまり、合計100MBのデータをコピーします。
dd if=inputfile of=outputfile bs=1M count=100
3.ディスクのバックアップ
「/dev/sda
」デバイス(通常はハードディスク全体)から4MBブロック単位でデータを読み取り、「/mnt/backup/disk_backup.img
」にバックアップを作成します。
dd if=/dev/sda of=/mnt/backup/disk_backup.img bs=4M
4.ISOイメージのUSBドライブへの書き込み
「linux_distro.iso
」ファイルを4MBブロック単位で「/dev/sdb
」デバイス(通常はUSBドライブ)に書き込みます。「status=progress
」オプションを追加することで、進行状況が表示されます。
dd if=linux_distro.iso of=/dev/sdb bs=4M status=progress
5.ディスクの消去(ゼロフィル)
「/dev/zero
」から「/dev/sdb
」に1MBブロック単位でデータをコピーし、ディスク全体をゼロで埋めます。これにより、ディスクが消去されます。
dd if=/dev/zero of=/dev/sdb bs=1M
まとめ
「dd
」コマンドは、強力で柔軟なデータコピーおよび変換ツールです。以下の表を参考に、目的に応じて適切なオプションを使用することで、効率的にデータのコピーや変換を行うことができます。
これらのオプションを駆使することで、「dd
」コマンドを使用したさまざまなデータ操作が可能です。
オプション | 説明 |
---|---|
if | 入力ファイルを指定 |
of | 出力ファイルを指定 |
bs | ブロックサイズを指定 |
count | コピーするブロックの数を指定 |
skip | 入力ファイルの先頭から読み飛ばすブロック数を指定 |
seek | 出力ファイルの先頭から書き飛ばすブロック数を指定 |
conv | データ変換オプションを指定 |