У меня есть жесткий диск на 3 ТБ, в котором по данным SMART было 16 поврежденных секторов. Я провел поверхностный тест с HDSentinel, который увеличил это число примерно до 100. Затем я непосредственно скопировал каталоги на работающий жесткий диск объемом 3 ТБ в порядке их важности (используя Robocopy или SynchronizeIt, которые сохраняют все временные метки, включая метки каталогов), что еще больше увеличило число поврежденных секторов до 416. Я думаю, что лучшим способом было бы полностью клонировать его на другой жесткий диск, чтобы спасти как можно больше данных, поскольку каждая попытка чтения поврежденного сектора, кажется, усугубляет проблему, но всегда есть риск из-за полного сбоя жесткого диска до завершения процесса, и некоторые каталоги здесь гораздо важнее других - в любом случае, то, что сделано, сделано, и я успешно восстановил то, что имело значение больше всего.
Во время поверхностного теста HDSentinel предоставил список нечитаемых секторов, с помощью которых я идентифицировал 6 файлов, затронутых поврежденными секторами; Я переместил их в специальную папку и постарался не трогать их - ну, я сказал, пытался, потому что сначала я хотел переместить их с помощью проводника Windows 7, но эта глупость настаивала на их анализе, так как они были выбраны, чтобы отобразить предварительный просмотр, который на некоторое время заморозил систему и добавил в счетчик еще несколько поврежденных секторов, поэтому мне пришлось перенести эти файлы из командной строки ...
Побочный вопрос: как можно в превентивном режиме отключить этот предварительный просмотр?
Теперь у меня есть несколько вариантов работы с этими файлами:
- Либо попробуйте скопировать их напрямую с помощью Roadkil Unstoppable Copier (который должен пропустить поврежденные сектора и спасти то, что можно спасти).
- Или запустите ddrescue, чтобы извлечь конкретный диапазон секторов, занятых поврежденными файлами (плюс первые 10 ГБ, чтобы иметь системные файлы, включая MFT, что должно позволить мне извлечь фрагментированные файлы без головной боли - эти поврежденные файлы в основном это были телевизионные трансляции (больше не онлайн), которые были загружены одновременно, и я думаю, именно поэтому они были записаны с чересстрочной разверткой, с тысячами фрагментов каждый, несмотря на то, что на жестком диске много свободного места).
Во втором случае (который, вероятно, является самым безопасным на тот момент), чтобы быть уверенным, что я ничего не пропустил, я хотел бы получить список файлов, имеющих хотя бы один сектор в потенциально поврежденной области. Первым идентифицированным поврежденным сектором был номер 4131708368, последним был 4157865694, поэтому я хочу определить, какие файлы находятся между секторами 4131440000 и 4158400000, чтобы иметь хороший запас прочности.
Прочитав эту ветку, я попробовал два метода:
С помощью nfi.exe (принимает значения секторов в качестве входных данных, я поставил шаг 8, чтобы получить только одно значение на кластер 4 КБ)
FOR /L %N in (4131440000,8,4158400000) DO nfi.exe R: %N >>"G:\nfi ST3000DM001 4131440000-4158400000.txt"
Но это не работает, оно отображает отрицательные значения. Кажется, это проблема 32-битного предела для инкрементного вычисления, несмотря на то, что числа меньше 2 ^ 32. Проведя тесты, я обнаружил, что проблема появилась в 2147483648, а это точно 2 ^ 31. Это почему ?
С помощью fsutil (требует входные значения кластера, полученные путем деления значений сектора на 8):
FOR /L %N in (516430000,1,519800000) DO fsutil volume querycluster R: %N >>"G:\fsutil querycluster ST3000DM001 516430000-519800000.txt"
Это работает, и презентация более упорядочена, чем при использовании nfi.exe (одна строка на кластер), но мучительно медленная: около 1 секунды на значение, для завершения потребуется 936 часов. Кажется, будет намного быстрее, если значения кластера будут введены в строку в одной строке, но я не знаю, как сделать добавочный подсчет, чтобы добавить все значения в одной строке, не вводя их, и я предполагаю, что бедный маленький cmd.exe захлебнулся бы 3370000 значениями по той же команде ...
Есть ли лучший способ получить то, что я хочу? Похоже ли это на безопасный и надежный подход к решению этой проблемы?
Благодарю.