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_2
。folder_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.の答えが「いいえ」の場合。どのような「次のステップ」を取るべきですか?新しいドライブで同じエラーを見つけるために使用するだけで
ddrescue
は解決策ではないようです。 rsync
新しいドライブを特定のファイルシステム(exFATなど)でフォーマットし、古いドライブのすべてのファイル(たとえば)を新しいドライブにコピーする必要がありますか?
答え1
収集したヒントによると、問題はディスクの物理レベルではなくファイルシステムの構造レベルにあるようです。一部のデータ構造(ディレクトリなど)が破損しています。 I / Oエラーは、カーネルファイルシステムが不可能な場所にあるディスクにアクセスするように指示するディレクトリ構造の出口ポインタから生じると推測できます。
私はあなたのように始めます(別のディスクに回復)。別のコピーから復元しようとしている間に、両方のコピーのいずれかを読み取り専用バックアップとして保持します。
次に、アクセス可能なファイルを新しいパーティション(ntfsまたは他のパーティション)にコピーします。
次に、いくつかの下位レベルのツールで残りの部分を復元してみましょう。私はntfs関連のツールを知りませんが、存在すると確信しています。データの価値が高い場合は、プロフェッショナルサービスをお試しください。回復可能なデータは確実に回復できます。
自分で試したい場合は、データファイル自体が破損せず、ディスク上で連続していると仮定して、.jpegファイルと.movファイルを含むディレクトリが破損しても、そのファイルをrecoverjpeg
保存できます。recovermov
他のデータファイルを回復するには黒魔法が必要です。これには、ファイル署名(コマンドで使用される署名file
)を検索するためのいくつかのntfs関連ツール、または大容量ファイルバイナリエディタを探してデータを検索してそれを識別し、ファイルの先頭と終わりを見つけることが含まれます(ディスクにあると仮定) 。