У меня был сбой жесткого диска, и мне удалось спасти некоторые данные с диска (1 ТБ) с помощью GNU ddrescue . Последние 800 ГБ диска были идеальными, без единой ошибки, но в первых 200 ГБ было почти 14000 ошибок (бадблоков), разбросанных по всей области. ddrescue создает лог-файл, который описывает, где находятся бадблоки.
ddrescue командной строки ddrescue:
ddrescue /dev/sdb /dev/sdd /mnt/sdc1/sdb.log -r -1 -f -d -v
Лог-файл выглядит так:
#      pos        size  status
0x00000000  0x1C08CE00  +
0x1C08CE00  0x00000200  -
0x1C08D000  0x011E6800  +
0x1D273800  0x00000200  -
0x1D273A00  0x005EC000  +
0x1D85FA00  0x00000200  -
...         ...         ...
Плюс (+) означает непрерывное хорошее пространство, минус (-) нечитаемый; положение и размер указаны в шестнадцатеричном формате. Чередование строк, оканчивающихся на '+', у меня есть список с позициями плохих блоков, но мне нужен способ соотнести эти плохие блоки с файлами в файловой системе, которая, кстати, NTFS.
Я знаю, что могу использовать что-то вроде DiskExplorer, чтобы сделать это вручную, но это было бы адом с 14000 секторов. Итак, есть более или менее автоматический и элегантный способ сделать это?


