ddrescueの後も「入力/出力エラー」は続きます。

ddrescueの後も「入力/出力エラー」は続きます。

NTFSでフォーマットされた2TBの外付けHDD(/dev/sda)があります。最近ファイルを移動すると「入力/出力エラー」が発生し、コマンドで奇妙な出力が表示され始めましたls

...
??????????? folder_1
?   ?   ?   folder_2
ls: cannot access 'folder_3': Input/output error
ls: cannot open directory 'folder_3': Input/output error
...

新しい4TB HDD()があり、次のコマンドを使用してディスクが故障する前にファイルをコピーして/dev/sdbみました。ddrescue

ddrescue -f -r3 /dev/sda /dev/sdb mapfile

報告されるここそしてここ

コマンドはエラー報告なしで約6時間で完了しましたが、「入力/出力エラー」は新しいドライブにまだ存在します。つまり、ls新しいドライブで実行しようとすると、以前と同じ出力が提供されます。

Windowsで新しいドライブを開こうとしたところ、外付けドライブに「修理する必要がある」項目があるという警告が表示されました(以前のドライブでも同じことをしましたが)。機会を与えようとしました。 Windowsで新しいドライブを「回復」すると、「入出力エラー」というメッセージは表示されなくなりますが、フォルダは消えました。つまり、新しいドライブにはfolder_1ありませんfolder_2folder_3

これが出力ですsmartctl -a /dev/sda

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       2107
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       320
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       103
 10 Spin_Retry_Count        0x0033   106   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       189
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       19
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       105
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       1166
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       15 (Min/Max 13/46)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   253   000    Old_age   Always       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       0
222 Loaded_Hours            0x0032   100   100   000    Old_age   Always       -       53
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       181
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

~によるとこのテーブル、「大丈夫」見えますね(おそらく)。

だから私の質問は次のとおりです。

  1. 既存のドライブから「すべての」データを回復する方法はありますか?
  2. 1.の答えが「いいえ」の場合。どのような「次のステップ」を取るべきですか?新しいドライブで同じエラーを見つけるために使用するだけでddrescueは解決策ではないようです。
  3. rsync新しいドライブを特定のファイルシステム(exFATなど)でフォーマットし、古いドライブのすべてのファイル(たとえば)を新しいドライブにコピーする必要がありますか?

答え1

収集したヒントによると、問題はディスクの物理レベルではなくファイルシステムの構造レベルにあるようです。一部のデータ構造(ディレクトリなど)が破損しています。 I / Oエラーは、カーネルファイルシステムが不可能な場所にあるディスクにアクセスするように指示するディレクトリ構造の出口ポインタから生じると推測できます。

私はあなたのように始めます(別のディスクに回復)。別のコピーから復元しようとしている間に、両方のコピーのいずれかを読み取り専用バックアップとして保持します。

次に、アクセス可能なファイルを新しいパーティション(ntfsまたは他のパーティション)にコピーします。

次に、いくつかの下位レベルのツールで残りの部分を復元してみましょう。私はntfs関連のツールを知りませんが、存在すると確信しています。データの価値が高い場合は、プロフェッショナルサービスをお試しください。回復可能なデータは確実に回復できます。

自分で試したい場合は、データファイル自体が破損せず、ディスク上で連続していると仮定して、.jpegファイルと.movファイルを含むディレクトリが破損しても、そのファイルをrecoverjpeg保存できます。recovermov

他のデータファイルを回復するには黒魔法が必要です。これには、ファイル署名(コマンドで使用される署名file)を検索するためのいくつかのntfs関連ツール、または大容量ファイルバイナリエディタを探してデータを検索してそれを識別し、ファイルの先頭と終わりを見つけることが含まれます(ディスクにあると仮定) 。

関連情報