У меня был сбой жесткого диска, и мне удалось спасти некоторые данные с диска (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 секторов. Итак, есть более или менее автоматический и элегантный способ сделать это?