ddrescueでデータ移動


[2012/05/15作成]

HDDが壊れそうなときに、データを移動するのに使われるツールにddrescueというものがあります。

ddrescueが使えるマシンに、死にそう・壊れそうなHDDと新しいHDDの二つを繋げ、新しいHDDに データを移し、その新しいHDDでマシンの寿命をもう少し延ばす…などというのがよくある使われ方 かと思います。

コピー元のHDDのOSの種類は問わないので、windowsやmacのHDDが怪しい場合にも使えて便利です ので、よく使う例を一つ。参考にされる方は自己責任で。
Step 1) ddrescueの稼動するマシンにコピー元のHDDと新しいHDDを繋ぐ。
atacontrolやdmesgなどで接続状況の確認。

コピー元のHDDをセカンダリに繋ぐとして、コピー先はUSB接続などにした方が経験上確かな場合が 多いので、次のようになったとします。

atacontrol list

ATA channel 4:
    Master:  ad8  SATA revision 2.x
    Slave:       no device present
ATA channel 5:
    Master:  ad10  SATA revision 2.x
    Slave:       no device present 
ここで、ad8がddrescueが稼動するマシン。ad10がコピー元のHDD。コピー先はUSBに接続されてて、da0という名前だったとします。
コピー元HDD:ad10
コピー先HDD:da0

なお、ddrescueは言ってみればコピー元HDDのデータを「完コピ」しますので、 コピー先HDDの容量は、コピー元HDDの容量以上でないといけません。


Step 2) ddrescue実行
では実行。

ddrescue -r 3 /dev/ad10 /dev/da0 ddrescue.log

ここでは、読み込めなかったときのリトライ回数を3回、コピー進行状況のログファイル名は、 ddrescue.logに記録する設定になっています。

コピー元のHDDの状況によっては、ddrescueが途中で停止してしまうことがあります。
壊れかけのHDDから読み出そうとするも、「動くのイヤ」とかいって消えてしまう(atacontrolで見つからなくなる) というのを何度か経験しました。

ログファイルが作成してあると、すでにコピー済みの箇所を飛ばして続きから処理を行っ てくれますが、ログファイルがないと、何度やっても同じところで止まるという危険が ありますので、ログファイルは作成するようにした方がよいでしょう。

当然のことながら、使用するシステムによって、ddrescueの引数などの仕様が上記の 書き方と異なることも十分考えられます。かならずman ddrescueを確認してから実行しましょう。

戻る
Copyright(C)2012 NET@KING All Rights Reserved.