
Посленеудачный анализ CHKDSK, который повредил множество файлов на жестком диске объемом 3 ТБ(ошибочно определяется как 746 ГБ, вероятно, из-за того, что контроллер USB2 несовместим с емкостью более 2 ТБ), я хотел бы провести точное сравнение этих файлов (с их правильными аналогами на резервном жестком диске) и извлечь поврежденные области для дальнейшего исследования, прежде чем удалять их.
До сих пор я действовал следующим образом:
- Откройте обе версии файла в WinHex. Активируйте отображение «Синхронизировать и сравнить».
- Запустите сравнение со смещением 0, сохраните отчет (обязательно для этого программного обеспечения, поскольку нет возможности напрямую найти следующее различие) с именем файла, укажите лимит в 10000 ошибок (чтобы избежать слишком больших отчетов).
- Как только он остановится (достигнув конца файла или предела в 10000 различных байт), откройте отчет TXT, скопируйте смещение первой разницы в меню WinHex "Go to offset". Отметьте первую ошибку (которая всегда находится на границе сектора) как начало блока.
- Найдите конец поврежденной области, прокрутив вниз, или, если это займет слишком много времени, добавьте 1 МБ или 100 КБ, пока не закончится, а затем прокрутите вверх (я не нашел способа сделать это проще в WinHex). Отметьте конец последнего сектора поврежденной области как конец блока.
- Извлеките блок как новый файл с шаблоном «Имя_файла [1111-2222]», где «1111-2222» — смещения начала и конца.
- Возобновите сравнение с конца ранее выявленной поврежденной области, чтобы найти другие, пока не закончится файл...
Теперь, есть ли способ автоматизировать этот кропотливый и трудоемкий процесс? Есть ли другие шестнадцатеричные редакторы, которые лучше подходят для сравнения файлов? Или я могу использовать скрипт, чтобы сделать все это сразу? Я нашел замечательный маленький инструмент командной строки под названиемdsfok(DS File Ops Kit), который может извлекать блок данных между двумя значениями смещения (среди других функций, которые я еще не тестировал). Поэтому мне понадобится еще один инструмент командной строки для выполнения сравнения и получения этих значений смещения, а также советы по написанию скрипта, чтобы заставить эти инструменты работать вместе. Спасибо.