Ну карту можно создать с шагом скажем в 64к секторов (32мб шаг), вычитывать все не виндой а линуксом (он кстати при подвисании винта шлет софтресет - может рыбе этого и хватит), между "хорошим" и "плохим" секторами - определять бисекцией начало/конец "плохого" блока. Оформить шеллскриптами или в перле. При ошибке - опять же в шеллскрипте слать по терминалу ресет, если софтресета по интерфейсу недостаточно. Сохранить номера секторов хороших/бэдов в файл, дальше - распарсить его, сгруппировав "хорошие" и "плохие" области, и скопировать все хорошие через dd.
Ну карту можно создать с шагом скажем в 64к секторов (32мб шаг), вычитывать все не виндой а линуксом (он кстати при подвисании винта шлет софтресет - может рыбе этого и хватит), между "хорошим" и "плохим" секторами - определять бисекцией начало/конец "плохого" блока. Оформить шеллскриптами или в перле. При ошибке - опять же в шеллскрипте слать по терминалу ресет, если софтресета по интерфейсу недостаточно. Сохранить номера секторов хороших/бэдов в файл, дальше - распарсить его, сгруппировав "хорошие" и "плохие" области, и скопировать все хорошие через dd.
Работы сравнительно много, но явно не на полгода