「dd」コマンドは、オペレーティング システムのバックアップを作成して、OS がインストールされているディスクのクローンを作成する場合に非常に便利です。 OS バックアップを取るための dd コマンドの使用例をいくつか示します。
注意 注:ターゲット ドライブは、クローンを作成するドライブと同じか、それ以上のサイズである必要があります。 dd コマンドは、使用済みスペースと未使用スペースの両方をターゲットからコピーします。1.ハードディスク全体を別のディスクにバックアップ
1. 以下の例では、ディスク「sda」のクローンを作成し、サーバー上に「sdb」として同一のディスクを作成します。
# fdisk -l Disk /dev/sda: 12.9 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00010897 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 1567 12069888 8e Linux LVM Disk /dev/sdb: 12.9 GB, 12884901888 bytes Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
2. ハードディスクのコピー全体を同じシステムに接続された別のハードディスクにバックアップするには、dd コマンドを実行します。ソース ハード ドライブの UNIX デバイス名は /dev/sda で、ターゲット ハード ディスクのデバイス名は /dev/sdb です。同期オプションにより、同期 I/O を使用してすべてをコピーできます。
# dd if=/dev/sda of=/dev/sdb conv=noerror,sync 25165824+0 records in 25165824+0 records out 12884901888 bytes (13 GB) copied, 453.846 s, 28.4 MB/s
ここで、
もし :ソース ディスク ドライブ (/dev/sda)
の :宛先ディスク ドライブ (/dev/sdb)
bs :一度に BYTES バイトを読み書きします (デフォルトは 512 バイトです。より大きなディスクには bs=64k を使用できます)
エラーなし :読み取りエラーの後に続行します。
同期 :データとメタデータに同期 I/O を使用します
3. 元のディスクにデータを復元するには、正しいソース (sdb) と宛先 (sda) を指定して前の手順を繰り返す必要があります。この場合、sda を削除して sdb から起動することもできます。
注意 :dd コマンド内で引数を逆にすると、貴重なデータがすべて消去される可能性があります。ソース (if=) とターゲット (of=) の両方の場所と名前を確認してください。2.ハードディスク全体をディスクイメージにバックアップ
1. ハードディスクのイメージ ファイルを作成し、他のストレージ デバイスに保存できます。データをディスク イメージにバックアップすることには多くの利点がありますが、その 1 つは使いやすさです。通常、この方法は他のタイプのバックアップよりも高速であり、予期しない災害が発生した場合でもデータを迅速に復元できます。以下のコマンドを使用して、ハードディスク /dev/sda をディスク イメージ ファイルにバックアップします。
# dd if=/dev/sda of=/var/tmp/sda_disk.img
ここで、
もし :ソース ディスク ドライブ (/dev/sda)
の :宛先ディスク ドライブ (/dev/sdb)
2. 別のハードディスクのイメージ ファイルを使用してハードディスクを復元するには、次の dd コマンドの例を使用します。
# dd if=sda_disk.img of=/dev/sdc
ここで、
もし :ソース ディスク ドライブ (/dev/sda)
の :宛先ディスク ドライブ (/dev/sdb)
3.ハードディスク全体を NFS 上のディスク イメージにバックアップし、それを復元する
1. nfs サーバーに十分な空き容量があるかどうかを確認してください。
# showmount -e nfs_server_IP Export list for xx.xx.xx.xx: /nfsshare *
# df -h Filesystem Size Used Avail Use% Mounted on xx.xx.xx.xx:/nfsshare 16G 44M 15G 1% /nfs_test
2. イメージを作成します。利用可能な帯域幅が十分にあることを確認してください。
# dd if=/dev/sda of=/nfs_test/sda_disk.img 25165824+0 records in 25165824+0 records out 12884901888 bytes (13 GB) copied, 263.396 s, 48.9 MB/s
ここで、
もし :ソース ディスク ドライブ (/dev/sda)
の :宛先ディスク ドライブ (/dev/sdb)
3. nfs 上のバックアップ ディスク イメージから復元するには (ディスク sda にディスク障害があり、システムが起動できない場合など)、ネットワークを使用してレスキュー モードで起動します。
4. nfs 共有をマウントします。新しく作成されたディレクトリ /nfsshare としましょう。
5. ディスク イメージ バックアップを使用して sda を復元します。
# dd if=/nfsshare/sda_disk.img of=/dev/sda
ここで、
もし :ソース ディスク ドライブ (/dev/sda)
の :宛先ディスク ドライブ (/dev/sdb)
6. サーバーを再起動します。
# shutdown -r now