
【Linux】ブロック単位でファイルのコピーと変換: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=outputfile2.ブロックサイズとコピーするブロック数の指定
ブロックサイズを1MBに設定し、100ブロック分のデータをコピーします。つまり、合計100MBのデータをコピーします。
dd if=inputfile of=outputfile bs=1M count=1003.ディスクのバックアップ
「/dev/sda」デバイス(通常はハードディスク全体)から4MBブロック単位でデータを読み取り、「/mnt/backup/disk_backup.img」にバックアップを作成します。
dd if=/dev/sda of=/mnt/backup/disk_backup.img bs=4M4.ISOイメージのUSBドライブへの書き込み
「linux_distro.iso」ファイルを4MBブロック単位で「/dev/sdb」デバイス(通常はUSBドライブ)に書き込みます。「status=progress」オプションを追加することで、進行状況が表示されます。
dd if=linux_distro.iso of=/dev/sdb bs=4M status=progress5.ディスクの消去(ゼロフィル)
「/dev/zero」から「/dev/sdb」に1MBブロック単位でデータをコピーし、ディスク全体をゼロで埋めます。これにより、ディスクが消去されます。
dd if=/dev/zero of=/dev/sdb bs=1Mまとめ
「dd」コマンドは、強力で柔軟なデータコピーおよび変換ツールです。以下の表を参考に、目的に応じて適切なオプションを使用することで、効率的にデータのコピーや変換を行うことができます。
これらのオプションを駆使することで、「dd」コマンドを使用したさまざまなデータ操作が可能です。
| オプション | 説明 |
|---|---|
if | 入力ファイルを指定 |
of | 出力ファイルを指定 |
bs | ブロックサイズを指定 |
count | コピーするブロックの数を指定 |
skip | 入力ファイルの先頭から読み飛ばすブロック数を指定 |
seek | 出力ファイルの先頭から書き飛ばすブロック数を指定 |
conv | データ変換オプションを指定 |
