ddrescue コマンドによるクローンについて
dd コマンドでは、クローン(コピー)できないハードディスクを
ddrescue を使用して、クローン(コピー)を取る方法
【 前置き 】
ddrescue コマンドは、通常の dd コマンドとは違い
不良セクタがあるハードディスクに(最適化)されたコマンドです。
不良セクタは無視して、とりあえずクローン(コピー)を優先し
のちに、不良部分を読み取りを行うというアルゴリズムになっています。
dd コマンドのオプションでも
conv=sync,noerror というオプションはありますが
それでも止まってしまう場合などに有効です。
ちなみに・・・sync は、エラーの分を 0 で埋める。
noerror は、エラーがあっても継続する。です。
※ddrescue には "dd_rescue" と "GNU ddrescue" が存在するようです。
詳しくはWiKiでも見てください・・・。
説明は後者の "GNU ddrescue" になります。
【 Ubuntu にて 実行する方法 】
1.インストール方法
ターミナルを開き以下、コマンドでインストール
sudo apt-get install gddrescue
2.ソフトウェアのディスクで対象のドライブをチェック
今回は、以下の条件で
ソース(不良ハードディスク) /dev/sda
ターゲット(正常ハードディスク) /dev/sdb
3.ターミナルにてコマンドを実行
[説明]
#sudo ddrescue [オプション] [ソース] [ターゲット]
という書式で実行します。
※ソース、ターゲットの順に注意、逆にするとデータ消えます。
※ソース、ターゲットの順に注意、逆にするとデータ消えます。
(例)
sudo ddrescue -f -n -v /dev/sda /dev/sdb
-f (上書き※ターゲットが物理ディスクでは必須)
-n (リードエラーを無視※付けなくても標準は 0 のため不要かも)
-v (詳細表示)
4.応用編
(例)
sudo ddrescue -f -r1 -d /dev/sda /dev/sdb logfile.log
-r1 (不良セクタの再読み込み回数 1 )
※回数を増やすことで復旧率は上がる可能性はあるがHDDへ負担増
-d (ダイレクトアクセス)
※キャッシュを使用せずダイレクトにアクセスする
logfile.log (ログファイルを作成)
※ログファイルを作成する。
ログファイルを指定することで、 ctrl+c でキャンセルした場合など
途中から進めることができたり、一度 -n で完了後 -r1 でエラー箇所だけ
読み直すこともできるので、作成しておきましょう。
↓
sudo ddrescue -f -n -v /dev/sda /dev/sdb logfile.log
で一度実行し完了後
sudo ddrescue -f -d -r1 -v /dev/sda /dev/sdb logfile.log
とすることで、2回目はダイレクトアクセスで不良個所のみ1回、再読み込みする
という風になります。
・ログについて
errsize: *****B, (エラーサイズ)
errors: *****,(エラー箇所)
例えば、オプション -n で実施後
sudo ddrescue -f -d -n -v /dev/sda /dev/sdb logfile.log
errsize: 1000KB,
errors: 77,
となってる場合は、エラーの容量が約1MB、77個のエラーがあり。
その後、オプション -n からオプション -r1 に変更して再実行
sudo ddrescue -f -d -r1 -v /dev/sda /dev/sdb logfile.log
※必ずログファイルを指定する。(指定しなかった場合は初めから実行されます)
(カーソル↑キーを押して -n を -r1 に書き換える)
その結果、以下になった場合は
読み取りエラーが出ていた場所を再度1回読み込み、22個読み込みに成功
約0.3MBが読み取りできたという結果になります。
errsize: 700KB,
errors: 55,
ログファイルを指定することで、正常な部分は再読取りせず
不良となっている部分のみ再読取りするので、時間が短縮できます。