Linux ищет строку байтов на всем жестком диске и перечисляет все файлы, к которым принадлежат данные? [закрыто]

Извиняюсь за заголовок. Чтобы быть более точным, я вспоминаю, что читал это где-то в прошлом году, когда пытался восстановить поврежденные данные на жестком диске.

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

0
задан 13 April 2017 в 21:26

1 ответ

Вы могли сделать как полезный комментарий от , 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, проигнорировано.

1
ответ дан 3 November 2019 в 11:18

Другие вопросы по тегам:

Похожие вопросы: