不良セクタやハードウェア障害のあるハードドライブからデータを回復するための、ddrescue のようなエラー処理機能を備えた rsync のようなファイル コピー ユーティリティ

不良セクタやハードウェア障害のあるハードドライブからデータを回復するための、ddrescue のようなエラー処理機能を備えた rsync のようなファイル コピー ユーティリティ

私のハード ドライブには、不良ブロックまたは不良セクターがあり、ディスク ヘッドの不良、モーターの不良、またはハード ドライブのデータの読み取りが非常に遅くなり、読み取りエラーが多数発生するその他の問題など、潜在的な機械的な問題が原因で読み取りに失敗しています。平均速度は 50 KB/秒ですが、読み取り速度が 10 KB/秒を下回ることもあります。また、ファイルまたはセクターで停止することが多く、通常は 2 ~ 10 分以上 (rsync を使用している場合はタイムアウトするまで) という非常に長い時間停止します。

速度は大きく変動しているようで、ファイルで頻繁にスタックし、ようやく「スタック解除」されても、ほんの短い間しか続かず、すぐにまたスタックします。ドライブも非常に静かで、たまにファイルをコピーする音がするだけです (通常、短時間スタック/スタック解除されてから再びスタックする)。したがって、通常 HDD の故障に関連するあの不快な音はまったくありません。ディスク ヘッドの位置がずれているために問題が発生しているのではないかという意見もありました。このため、最終的にデータが正常に読み込まれるまでに何度も再読み取りが必要になります。もっともらしい話ですが、話がそれてしまいました...

とにかく、rsyncの問題は、まともなエラー処理サポートがないように見えることです。明らかに、故障したハードドライブからデータを回復するために設計されたものではありませんが、いわゆる「データ回復」ユーティリティはすべてこのような用途向けのソフトウェアは、故障したハードドライブからファイルをコピーするのではなく、削除されたファイルや壊れたパーティションの回復に重点を置いています。削除されたファイルの回復は明らかに私が必要としているものではないので、私がまだ求めているものを見つけられずにがっかりしていることをご理解いただけると思います。

当然、ここで「ddrescue を使うべきだ!」と言うでしょう。確かに、それはそれで結構ですが、私はすでにほとんどのデータをバックアップしているので、特定のファイルだけを復元したいのです。ddrescue のように、パーティション全体をブロックごとに復元しようとは考えていません。特定のファイルとディレクトリだけを復元したいのです。

理想的には、rsync と ddrescue を組み合わせたものが欲しいです。rsync のように通常のファイルのディレクトリとしてソースと宛先を指定できるもの (ddrescue で必要な 2 つの完全なパーティションではなく)、最初の実行でエラーのあるファイルをスキップする方法、およびその後の実行でエラーのあるファイルの回復を試みることができるもの (もちろん、コマンドを少し変更して)、再試行の回数を指定するオプションさえ提供できるもの... ddrescue がブロックで動作するのと同じように、rsync のように特定のファイル/ディレクトリで動作するユーティリティだけが必要です。

では、私は空想しているだけなのでしょうか、それとも、これを実行できる何かがどこかに存在するのでしょうか? あるいは、rsync や ddrescue をそのように動作させる方法があるのでしょうか? どのファイルを「救出」したいかを選択でき、最初の実行でエラーのあるファイルをスキップし、後でそれらのエラーを再試行できる限り、どのような解決策でも構いません。

これまで、以下のオプションで rsync を試してきましたが、タイムアウトよりも長い時間、ファイルにスタックしてしまうことがよくあります。理想的には、次のファイルに移動して、スタックしたファイルに後で戻ってくるようにしたいのですが、それは不可能だと思います。とにかく、これまで使用してきたものは次のとおりです。

rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/

答え1

3TB の Hitachi を使用していますが、読み込みが非常に遅いため、ddrescue はファイル レベルで動作します。ただし、ディレクトリでは動作しません。ただし、ddrescue の --timeout または --min-read-rate オプションを動作させることができませんでした。

一度に 1 つのファイルを ddrescue するスクリプトでこれを実行する必要があります。

cat listoffiles | while read file
pipe while> do
pipe while> ls -l "$file"
pipe while> ddrescue -n -e1  "$file" /cc/RecoveredFiles/"$file" /cc/RecoveredFiles/"$file".llog
pipe while> date
done | tee -a  /cc/RecoveredFiles/ddrescue.log

答え2

おそらく、この質問がなされてから数年の間に rsync は変更されたのでしょう。

私の経験では、rsync現在、故障したハードドライブからデータをコピーするのに非常に役立っています。

rsync -a <src> <dest>

エラーが発生した場合はすぐに先に進み、再実行時にそれらのファイルを再度試します。

rsync --versionレポート rsync version 2.6.9 protocol version 29

その他の回答に関して:

2011 年の回答では、ddrescue の商用版にすぎないツールを宣伝しているようです。ファイル対応であるという兆候はありません。怪しいですね。2013 年の回答は興味深いです。

答え3

素晴らしい質問ですね。詳細さが気に入りました。このシナリオでうまく機能するユーティリティとしては、Filescavengerを試してみることをお勧めします。ケテック100 回以上の再読み取りが可能ですが、さらに重要なのは、ディスク イメージング機能を備えていることです。この機能により、ファイルの評価、イメージのロード、ファイルのスキャンに時間を費やすことなく、コンテンツ全体をイメージにダンプできます。このユーティリティはホーム ユーザー向けに 50 ドルで販売されていますが、お金を使う前にダウンロードして、イメージから何を復元できるかテストすることができます。

プロフェッショナル用途であれば、かなりの費用がかかりますが、論理 RAID アレイとハードウェア RAID アレイのサポートを含む重要な機能が得られます。

これも失敗する場合は、ソフトウェア回復ツールの適用範囲外である可能性があります。適用範囲外であり、ラボでの回復にかかるコストを正当化できる場合は、お住まいの国、州、都市をお知らせください。お近くの弊社または競合他社のラボをお勧めできます。

クリス

答え4

あなたが望むプログレッシブコピー機ドライブ全体を対象としたものですが、ファイル パスをパラメータとして受け取るため、個々のファイルにも機能するはずです。ディレクトリには機能しないと思います。各ファイルを指定する必要があります。

関連情報