ddrescue プロセスを再開するにはどうすればいいですか?

ddrescue プロセスを再開するにはどうすればいいですか?

1TB USB HD を回復する必要があります。これを実現するために を使用しています。起動したらddrescue再開できる方法はありますか?ddrescue

次のコマンドを使用しています:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image

答え1

ddrescue再開できますが、再開するにはログ ファイルが必要です。ログ ファイルには、ddrescue がこれまでに実行した進行状況が記録され、ddrescue を再起動すると、ログ ファイルが読み込まれ、中断したところから開始されます。

ログ ファイルは 3 番目のパラメータになります。

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

ログ ファイルなしで ddrescue の実行をすでに開始していて、それをキャンセルした場合、次に ddrescue を実行すると、すでに回復された内容の記録がないため、最初から開始されます。

注記:ddrescueそしてレスキュー異なるプログラムです。

答え2

ログファイルを指定するのを忘れた場合でも、希望があるかもしれません:

生成モード

チュートリアルを読まずに、ログファイルなしで ddrescue を起動しました。2 日後、コンピューターがクラッシュし、ddrescue がどれだけのデータを救えたかわかりません。さらに悪いことに、救出を再開できず、最初からやり直す必要があります。

または、 でドライブのコピーを開始しdd conv=noerror,sync、上記と同じ状況になっている可能性があります。 この場合、変換引数を指定して dd を呼び出さない限り、 dd によって作成されたコピーを使用できないことに注意してくださいsync

(まだ) 絶望しないでください。Ddrescue は、場合によっては、入力ファイルと (部分的な) コピーから、正確なログファイルとほぼ同じ品質の近似ログファイルを生成できます。これは、すべてゼロを含むセクターが復旧されていないと単純に想定することによって行われます。

ただし、コピー先がドライブまたはパーティション (または既存の通常ファイルで切り捨てが要求されていなかった場合) の場合は、おそらく最初から ddrescue を再起動する必要があります (もちろん、このときはログファイルを使用します)。その理由は、まだ上書きされていない古いデータがドライブ内に存在する可能性があり、そのため試行されていないがゼロではない可能性があるためです。

たとえば、最初に次のコマンドのいずれかを試したとします。

ddrescue infile outfile

または

dd if=infile of=outfile conv=noerror,sync

次のコマンドで、おおよそのログファイルを生成できます。

ddrescue --generate-mode infile outfile logfile

答え3

他の人が言っているように、再開できるようにするには、常に 3 番目のパラメータとしてログ ファイルを指定する必要があります。これを指定しなかった場合、ここでは役に立ちません。プロセスがどのポイントに到達したかがおおよそわかっている場合は、 および--input-positionパラメータを使用--output-positionしてそのポイントから開始できます (両方のパラメータを同じ値に設定してください。そうしないと、出力が破損します)。

答え4

パーhttps://wiki.archlinux.org/index.php/ディスクのクローンスイッチを使用するとconv=noerror,syncdd実際にゼロが追加されるようです最後にブロックの正確な位置ではなく、読み取りエラーが発生した位置です。これは、2013 年 8 月 29 日の Miles Wolbe の回答の情報と矛盾しています。

たとえば、正しいシーケンスが であり198123283、途中で読み取りエラーが発生した場合198283000、 ではなく が書き込まれます198000283

したがって、実際に読み取りエラーがあった場合、提案された方法は正確ではありません。読み取り可能であったはずの領域がゼロで埋められ、「救済」されたとみなされることになります。

ちなみに、このような回復の試みを始めるときは、まず、宛先ドライブをゼロで埋める (または少なくとも空き領域を埋める。これは WinHex などで実行できます) ことをお勧めします。

関連情報