ddコマンドは、データの変換とコピーに使用される多用途で強力なユーティリティです。入力ファイルまたはデータストリームから読み取り、出力ファイルまたはデータストリームに書き込むことで動作するため、多くのシステム管理タスクにとって不可欠なdd tool`となります。
dd コマンドの理解
その核となるのは、ddがバイト単位でデータをコピーすることです。次のコマンドを考えてみましょう。
dd if=/home/pete/backup.img of=/dev/sdb bs=1024
このコマンドは、ファイルbackup.imgの内容をブロックデバイス/dev/sdbにコピーします。入力ファイル全体が読み取られるまで、この操作を 1024 バイトのブロック単位で実行します。
必須の dd オプション
ddコマンドの動作は、いくつかの主要なオプションによって制御されます。
if=file: 入力ファイルを指定します。ddはこのファイルから標準入力の代わりに読み取ります。of=file: 出力ファイルを指定します。ddはこのファイルに標準出力の代わりに書き込みます。bs=bytes: ブロックサイズを設定します。ddは一度にこのバイト数を読み書きします。キロバイト(1024 バイト)にはk、メガバイトにはM、ギガバイトにはGなどの接尾辞を使用して、より大きな単位を指定できます。例:bs=1M。count=number: 指定されたブロック数のみをコピーします。
bs と count の併用
countオプションは、特定の量のデータをコピーする必要がある場合に役立ちます。コピーされる合計データ量は、bsにcountを掛けたものになります。たとえば、10M のファイルに対して次のコマンドを実行する場合を考えます。
dd if=/home/pete/backup.img of=/dev/sdb bs=1M count=2
backup.imgが 10M であっても、このコマンドはddに対し、サイズ 1M のブロックを 2 つコピーするように指示します。結果として、2M のデータのみがコピーされ、転送が不完全になります。countは特定のシナリオで非常に有用ですが、ファイル全体をコピーすることが目的であれば省略できることがよくあります。bsを最適化すると転送速度が大幅に向上しますが、デフォルト設定で十分な場合も多いです。
dd の強力さと危険性
dd linuxコマンドは非常に強力です。これを使用してディスクドライブ全体のバックアップを作成したり、ディスクイメージを復元したり、データを安全に消去したりできます。しかし、この力にはリスクが伴います。ifとofの値を入れ替えるなどの小さなミスは、回復不能なデータ損失につながる可能性があります。特に/dev/sdaのようなデバイスに書き込む場合は、実行前に必ずコマンドを二重に確認してください。