web-dev-qa-db-ja.com

破損したハードドライブブロックのファイルを読み込もうとせずにスキップするようにrsyncに指示する方法

ハードウェアエラーのあるディスクからファイルを回復しようとしています。

ディスクはディスクユーティリティによって修復されましたが、ディスクが破損していることがわかりました。そのため、障害が発生する前にすべてをバックアップする必要があります。

そのため、Finder経由でファイルをコピーしようとしましたが、スタックします。他のユーティリティを試してみたところ、ヘッドが損傷したブロックに当たると、ファイルをコピーしようとしてスタックしてしまいました。

だから私はrsyncで試しましたが、うまくいくようです。しかし、私が不良ブロックにぶつかったときは永遠にかかります。

だから私は、Rsyncにファイルに煩わされないように指示する方法があるかどうか、時間がかかりすぎるかどうか疑問に思っていましたか?

このドライブがどれほど長く続くかはわかりません。すべてのデータをできるだけ早く取得したいのですが、マウントしてFinderでデータを確認できます。

これは私がコマンドとして使用しているものです。ファイルの試行を減らす方法がある場合はアドバイスをください。rsyncを使用して、破損したブロックの読み取りを試行できますが、特定のセクターで長時間スタックしないようにします。

rsync -arv -e--ignore-errors --partial-dir=/Volumes/backup/partial /Volumes/work /Volumes/backup

前もって感謝します。

13
rataplan

短い答え:rsyncこれは、この場合に使用するのに適切なツールではありません。その使用は、有害でさえあります。
代わりにddrescueを使用してください(dd_rescueより優れています)。それはあなたが求めていることを行うことができます。


ディスクが物理的に損傷している場合、修復しようとすると brick になる可能性があります。

your timeの使用に関する問題だけでなく、rsyncが損傷したセクターに近づき、永久にハングアップするように見える場合。問題は、繰り返される操作で修復不可能なエラーが発生する可能性があり、高価な部品交換なしではデータを救うことができなくなることです(常に可能であり、がない場合)ブリックあなたの[〜#〜] hdd [〜#〜])。

この場合、私が見つけた最も安全な手順は

  1. 壊れていない別のディスクにrawイメージを作成するには.
  2. その画像のcopyを作成します。
  3. コピーを作業してfilesystemを修正し、ファイルを救出するには

なぜコピーするのですか?filesystem修正ステップで何かが失敗した場合、再度タッチする必要なしにいつでも再開できます。元の破損[〜#〜] hdd [〜#〜]

ddrescue を使用してrawディスクイメージを実行することをお勧めします。これは、読み取りエラーが発生した場合でも問題なく機能するためです。


ddrescueでそれを行う方法

ddrescueは、rsyncを使用したい場合とまったく同じように使用でき、破損したセクターを再試行または分割せずにスキップして、可能な限り多くのデータをコピーします。
このコマンドは以下にあります(/dev/hda1の代わりに、デバイスを置きます):

ddrescue --no-split /dev/hda1 imagefile logfile

その後、この最初のパッセージ(より速いもの)を実行した後、エラーが発生した場合に3回アクセスしようとして、それを改良することができます。

ddrescue --direct --max-retries=3 /dev/hda1 imagefile logfile 

他のオプションを使用してddrescueコマンド呼び出しを繰り返し、毎回より多くのデータを抽出しようと試みて、イメージをさらに洗練させることができます(参照を参照)。完了したら、コピーを作成し(必要なスペースがすべてある場合)、次にfilesystemを修正します。

生の画像は元の画像と同じ大きさになることに注意してください[〜#〜] hdd [〜#〜]
インターネット、このサイト、およびStackExchangeの他のサイトで、ddrescueまたは他のツールを使用してデータをレスキューする方法に関する多くの質問と回答を見つけることができます。

参考文献:

10
Hastur