Извиняюсь за заголовок. Чтобы быть более точным, я вспоминаю, что читал это где-то в прошлом году, когда пытался восстановить поврежденные данные на жестком диске.
У меня есть жесткий диск windows XP, который пострадал от сбоя головки и вызвал невосстановимые плохие сектора на некоторых файлах. Я клонировал диск на дубликат и заменил поврежденные файлы, используя резервную копию, которая была у меня давно.
Что я уже сделал, так это... Я загрузился в Parted Magic с загрузочного CD Ultimate и использовал инструменты linux ddrescue для клонирования поврежденного диска в образ диска, затем использовал logfile.txt для записи DEADBEEF во все сектора, которые он не смог прочитать/клонировать в файл образа диска и создать полный образ. Затем я использовал одну из команд linux grep, чтобы попытаться найти во всей файловой системе строку DEADBEEF и перечислить все файлы, содержащие эту строку, хотя у меня возникли проблемы с тем, что через несколько часов после начала поиска она прекратила поиск из-за какой-то странной ошибки.
Я также вручную исправил ошибки $MFT (Master File Table), все, кроме данных одного файла с картинками, которые не важны, чтобы я мог правильно просканировать всю файловую систему и увидеть все файлы (некоторые не отображались из-за повреждений).
Мне нужно сделать следующее:
Я хочу полностью просканировать весь диск до уровня байта (как если бы я просматривал образ диска в шестнадцатеричном редакторе), каждый сектор, на наличие строки DEADBEEF, а затем получить список всех файлов, к которым принадлежит плохой сектор, перезаписанный DEADBEEF, в соответствии с файловой системой. Я помню, что где-то читал об этом: можно просканировать диск и, обнаружив строку, перечислить смещение/местоположение/сектор строки DEADBEEF и файл, которому принадлежат данные в этом секторе. Или каждый поврежденный сектор и список файлов, которым принадлежит поврежденный сектор.
В лог-файле ddrescue перечислены все сектора, которые были определены как нечитаемые (около 1000 200-байтовых секторов), в которые он записал DEADBEEF. Если я знаю, каким файлам принадлежат эти плохие сектора, я могу заменить их, используя старую резервную копию.
Прежде чем вы спросите, я не могу использовать только старую резервную копию, потому что ей около 3 лет. Старая резервная копия - это оригинальный диск с этого компьютера, который я клонировал на диск, который я пытаюсь спасти. Большинство поврежденных секторов после сбоя жесткого диска находилось в той части диска, где были только файлы, которые присутствовали на оригинальном диске. Я могу легко скопировать эти файлы с оригинального диска на новый, чтобы исправить все плохие сектора DEADBEEF, но мне нужно знать, к какому файлу относятся эти плохие сектора.
Опять же, я помню, что читал что-то о сканировании всех секторов диска и получении списка файлов, которым принадлежит определенный сектор. Как же это сделать из Parted Magic? Мне нужно смонтировать его там, чтобы он был смонтирован как доступный только для чтения.
Вы могли сделать как полезный комментарий от , steeldriver говорит, и используйте ddrutility
, Это, кажется, не находится в Ubuntu repos, но это - домашняя страница, https://sourceforge.net/projects/ddrutility /
Конкретно использование, это - инструмент ddru_findbad
, Вот клип от, он страница Wiki:
<час>
ddru_findbad
Это - сценарий удара, который попытается найти, какие файлы связаны с поврежденными секторами в ddrescue файле журнала.
Это полагается на сторонние утилиты для своих функций. Это не может работать над всеми системами. Это может быть медленно, и может быть очень медленно если весьма применимый, если существует много поврежденных секторов в списке (это не работает хорошо с большим ошибочным размером).
я испытываю желание забыть о номерах секторов и просто смонтировать клонированное изображение & ищите все файлы "DEADBEEF", с находкой, xargs & grep в Ubuntu (или Xubuntu, Lubuntu, или Debian, большая часть любого Linux).
, Легче ли это или быстрее, чем попытка ddru_findbad
или не, вероятно, зависит от как большой & быстро Ваш образ диска.
find /mnt/x -type f -print0 | xargs -0 grep --files-with-matches "DEADBEEF" >> list
, Где изображение смонтировано к /mnt/x
. Затем список файлов имеет все имена файлов то соответствие. Любое свободное пространство, которое имеет DEADBEEF, проигнорировано.