I have a 2TB external HDD (/dev/sda), formatted as NTFS. Recently, it started giving me "Input/output error" when moving files and strange output to the ls command, like
...
??????????? folder_1
? ? ? folder_2
ls: cannot access 'folder_3': Input/output error
ls: cannot open directory 'folder_3': Input/output error
...
I had a new 4TB HDD (/dev/sdb), so I tried using ddrescue to copy the files before a disk-failure, with the command
ddrescue -f -r3 /dev/sda /dev/sdb mapfile
The command completed in about 6 hours and reported no error but the "Input/Output error" are still present in the new drive, i.e. when I try to run ls on the new drive it still gives me the same output as before.
I tried opening the new drive from Windows, which warns me about something "to fix" on the external drive (although it did the same with the old drive) and I tried giving him a chance. After "fixing" the new drive in Windows, there are no more "Input/output error" messages but the folders are gone, namely there are no folder_1, folder_2 and folder_3 on the new drive.
Here is the output of 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
which, according to this table, looks "fine" (I guess).
So, my questions are:
- is there a way to recover "all" the data from the old drive?
- in case the answer to 1. is "No." which is the "next step" I should take? Because using
ddrescueonly to find the same errors on the new drive doesn't seem like a solution. - should I format the new drive with a particular filesystem (e.g.
exFAT) and just copy all the files (e.g. with
rsync) from the old drive into the new one?