web-dev-qa-db-ja.com

Linux:破損したHDからコピーする最良の方法は何ですか?完全に読み取ることができるファイルのみですか?

破損したHDD(SDDではない)からコピーしています。約15%のファイルでI/Oエラーが発生します。残りの85%完全なファイルのみが必要で、破損したファイルのリストを取得します。どうやってするか?

cpは最初の読み取りエラーで停止します。 scp/rsyncは文句を言ってコピーを削除し(必要)、終了します(不要)。 I/Oエラーの後で続行する方法はありません。少なくとも、rsync(1)のマニュアルを読んでも見つかりません。

私は長い間グーグルで検索しましたが、すべての投稿は他のニーズに関するものです。

  1. IOエラーはハードディスクが損傷していることを意味します(私はそれを知っています);
  2. 単一のファイルの適切なセクションをコピーする方法をポスターに伝え、破損したデータをゼロで埋めます(私は、それぞれ10KB未満の100kファイルを持っており、破損したファイルは、1バイトだけが欠落している場合でも役に立ちません)。
  3. 悪い接続と戦い、コピーを完了するために(ネットワーク経由で)rsyncを繰り返し実行する方法をポスターに伝えます。
  4. rsyncがファイルを読みにくくするためにデフォルトのタイムアウトを変更する方法を投稿者に伝えます(私はこれをしたくありません)
  5. ファイルシステムエラーを修正するためにfsckを実行するようにポスターに指示します。

不要な回答のリストを読んでいただきありがとうございます。

注:これは物理的な損傷のあるディスクであり、適切な診断ツールによって確認されています。また、徹底的なfsckを実行しました。

4
Tankman六四

rsync --ignore-errorsは、これまでのところうまくいくようです。マニュアルには次のように書かれているので、私はそれが機能するとは思っていませんでした。

   --ignore-errors
          Tells --delete to go ahead and delete files even when there are I/O errors.

--deleteオプションをまったく使用しなかった場所。

4
Tankman六四

GNU ddrescueを使用して、不良セクタをスキップしてパーティションのイメージを作成できます。次に、イメージを読み取り専用でマウントすると、特定のフォルダーにアクセスするときにファイルシステムエラーがすばやく発生します。またはデータがゼロのいくつかのファイル ここ および ここ はddrescueのいくつかのチュートリアルです。

1
Aleix Mercader