今回はLinuxで使用されている「dd」コマンドについて説明しようと思います。
「dd」コマンドはファイルやデバイスのコピーをするために使用されます。
Linuxでコピーコマンドというと「cp」コマンドの方が有名だと思いますが、「dd」コマンドはファイルだけでなく、デバイスのコピーも可能です。
なので、ハードディスクドライブすべてをコピーして、バックアップを取るために使用されることもあります。また、「dd」コマンドはブロックサイズでのコピーを可能としているため、部分的にデバイスのデータをコピーしたり、書き込んだりするということも可能です。
「dd」コマンドの書式及びオプション一覧を下記に示します。
dd [オプション]
オプション一覧
if=ファイル・・・ファイルから読み出す。デバイスファイルも指定可能。
of=ファイル・・・ファイルへ書き込む。デバイスファイルも指定可能。
bs=バイト数・・・1回に読み書きするブロックサイズ。(バイト数)
ibs=バイト数・・・1回当たりの入力ブロックサイズ。
obs=バイト数・・・1回当たりの出力ブロックサイズ。
count=個数・・・ibsで指定したサイズのブロックを「個数」分だけコピーする。
skip=ブロック数・・・ibsで指定したサイズを「ブロック数」分、先頭からスキップする。
seek=ブロック数・・・obsで指定したサイズを「ブロック数」分、先頭からスキップする。
基本的には「dd if=ファイル名/デバイス名 of=ファイル名/デバイス名」の形式を覚えておけばバックアップを取ることができます。
デバイスの内容をOSごとクローンコピーしたい場合、例えば「dd if=/dev/sda of=/dev/sdb」といったように入力・実行すれば/dev/sdbとしてsdaのクローンコピーを取ることができます。
あるいは「dd if=/dev/sda of=適当なファイル名」とすることでバックアップファイルを作成することが可能です。
また、「dd」コマンドはブロックサイズを指定してコピーの入出力量を調整することが可能なので、ハードディスクのMBRのみバックアップ作成することも可能です。
MBRとはOSを起動する際に読み込まれるブートローダが保存されているハードディスクの先頭512KBのことです。MBRはブートストラップローダやパーティションテーブル等のデータが格納されています。
「dd」コマンドでこの512KBを「dd bs=512 if=/dev/sda of=適当なファイル名」と指定することによって、MBRだけを取り出してバックアップを取ることが可能となります。
今回は汎用性の高いコピーコマンドである「dd」コマンドについて説明させていただきました。
参考資料
・【 dd 】コマンド――ブロック単位でファイルをコピー、変換する:Linux基本コマンドTips(163) - @IT (itmedia.co.jp)