ddでDiskのコピー

不良セクタが多発した場合、Windowsでは容易にシステムが起動しなくなりますが、そんな時でも、Linuxを使えば一部のデータを救済出来る事があります。
一部データの抜き出しなどは、Windowsで操作するよりも、遥かに高い確率で成功します。また、ddを使って、Diskのコピーを作成出来れば、高い確率でシステムの大部分を復旧出来ます。(たぶん)

で、ddでのコピーの仕方

Disk to Disk

元のDiskと同等以上の容量を持つDiskを、一度にシステムに接続出来る場合

# sudo dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync

*二台接続出来ない場合は、一端USB Diskなどにファイルとして保存して、そこからコピー先にddし直します。


if

入力ファイル または デバイス

ファイル名を指定したり、/dev/sda などのデバイス名を指定する

of

出力ファイル または デバイス

bs

バッファーサイズ

標準値だと非常に遅い。エラーが出た際はここに指定したサイズ単位でコピーが行われないので、速度と安全性のバランスを考えて設定する。エラーが無いDiskをコピーするのであれば、8192 とか大きな値を設定しても問題ない

conv

noerror:

エラーが発生しても、処理を継続する

sync:

エラーが発生した位置は、nullで埋められる。noerrorを一緒に指定してください。指定しない場合、エラー部分が詰めて処理される為、データが破壊されます。

途中経過の確認

動作中は、基本的に何のメッセージも出力されません。コピーの進捗を知りたい時は、別のターミナルを開いて、dd にシグナルを送ります。
シグナルを受けた dd は、コピーしたデータ量、経過時間、転送速度などを出力します。

# killall -USR1 dd


Comments