dd コマンドはハードディスク・パーティションを丸ごと取り出します。0/1の信号のママ取り出すらしいです。ddコマンドを使えばデータをそのまま、ディスクを移動させることが出来ます。
dd でディスクからディスクへバックアップ
ディスクToディスクでコピーする場合。ハードディスクの容量が同じゃないとだめ
dd if=/dev/sdb of=/dev/sdc
dd でディスクからイメージファイルへ
HDDに空き容量があるなら、イメージファイルを作っちゃうのが後で使いやすい。
dd if=/dev/sdb of=/var/disk-img/some-winXp-hdd.img
HDDに故障箇所があっても、読めるところを強引に読んでしまう。
→ディスクにエラーがあっても大丈夫
dd は多少のエラーがあると作業をやめてしまうので、故障箇所はすっ飛ばして、読める箇所をどんどん読み込んでバックアップを取ってしまう。
dd if=/dev/sdb of=/var/disk-img/some-winXp-hdd.img conv=sync,noerror bs=4096
- noerror がエラー読み飛ばし
- sync はエラー箇所をNUL(ゼロ)で埋める
- bs はbyte size 読込書き出すバイトサイズ
bs が小さい方がゼロ埋量が少なくて済むけど、512など小さいと極端に時間が掛るから注意が必要。ディスクエラーからのデータ取り出しなど神経使う作業は512していかな。
DD実行中に、転送状況
途中の経過を見ます.
killall -USR1 dd
mac osx やBSD 系は INFOね(こっちが正しい実装だと思う
killall -INFO dd # OSX
ddは KILLのオプションでUSRをしていたら途中経過を表示します.
dd の進捗を見ることが出来ます。
7129825+0 記録始め 7129824+0 記録終わり 3650469888 バイト (3.7 GB) コピー終了, 450.668 s, 8.1 MB/s
この転送速度からどれくらいの時間が掛るか計算できますね。転送速度や、残りの途中経過を見ながら、dd コマンドを使えばOKですね。
ntfs でも問題ない?
→大丈夫。DD出来る。でもntfscloneも使える
WindowsのNTFSでも問題なくDD出来ます。0/1を書いちゃうから当たり前。だけど、ntfs はNTFS用のツールを使うのも良い。パーティション単位ならNTFSツールが高速
ntfsclone -rescue -O /dev/sdb1 /dev/sdc1
dd でディスクの完全消去
dd は null を書き込むことが出来るので HDDをzeroで埋めて、データを消去することが出来ます。ディスクの完全消去にも使えます。フォーマットでも消えないデータを消せます。
dd if=/dev/zero of=/dev/sdc
dd でCD-ROMをイメージ化
dd でCD-ROMをiso イメージにすることが出来ます。
dd if=/dev/cdrom of=fooobar.iso
他にもいろいろな使い方が出来ます。
など、標準入出力を使うことで、コマンド連携が可能でした。
出来がったイメージファイルは圧縮しておくと良いです。
Gzipで圧縮すると相当小さくなります。
http://d.hatena.ne.jp/takuya_1st/20101019/1287508076lzop で圧縮
takuya@v1055d:/media/disk/disk-imgs$ time lzop takuya-letsnot.img
<gzipの場合> # dd if=/dev/sda | gzip -c > /mnt/sdc1/sda.img.gzhttp://blog.dc-d.jp/?p=600
2010-10-28追記
知識としてdd を知っておいた方がいい。実際使うのはdd_rescueが便利かも
dd_rescueコマンドで、HDDのバックアップ が楽になる - それマグで!