I've had a hard disk failure and managed to rescue some data from the disk (1TB) with GNU's ddrescue. The last 800GB of the disk were perfect, no single error, but in the first 200GB there were almost 14000 errors (badblocks) spread across the area. ddrescue creates a logfile that describes where the badblocks are.
ddrescues command line params:
ddrescue /dev/sdb /dev/sdd /mnt/sdc1/sdb.log -r -1 -f -d -v
The logfile looks like this:
# pos size status
0x00000000 0x1C08CE00 +
0x1C08CE00 0x00000200 -
0x1C08D000 0x011E6800 +
0x1D273800 0x00000200 -
0x1D273A00 0x005EC000 +
0x1D85FA00 0x00000200 -
... ... ...
The plus (+) means contiguous good space, the minus (-) unreadable space; position and size are in hexadecimal. Striping the lines ending in '+' I have a list whith badblock positions, but I need a way to correlate this badblocks to files on the File System, which is, by the way, NTFS.
I know that I can use something like DiskExplorer to do this manually, but it would be the hell with 14000 sectors. So, there is a more or less automatic and elegant way of doing this ?
