У меня нет хорошего решения, но обычно, если данные каждый раз считываются с CD-ROM по-разному, это звучит Для меня это скорее проблема с оборудованием, чем на самом деле проблема с дефектным компакт-диском, поскольку компакт-диски включают ECC, что означает, что сектор можно прочитать или нет, и если он может быть прочитан, он будет показывать стабильные данные.
Также, возможно, используйте параметр ddrescue
-d
для доступа к источнику, потому что некоторые операционные системы могут выдавать случайные данные после того, как ошибка чтения произошла в опережающем чтении (что и делается на заднем фоне).
Попробуйте использовать другой компьютер, не использующий какое-либо оборудование другого компьютера, и посмотрите, получится ли у вас по-прежнему такой загадочный результат.
Но обратите внимание: выполнение двух запусков ddrescue
может привести к созданию двух разных образов, потому что, если есть ошибки чтения, возможно, были восстановлены разные части исходного кода. (Вы пишете, ошибок нет. Возможно, с опцией -d
дело обстоит иначе.)
ddrescue
Если вы можете исключить неисправное оборудование и хотите снова сравнить образ с источником, не извлекая другое изображение, вы можете попробовать мой инструмент ddrescue- проверьте
, чтобы диагностировать различия.
ddrescue-verify
является только исходным кодом (и, вероятно, только Linux), поэтому вам нужно знать, как использовать систему разработки / компиляции.
Сегодня ddrescue-verify
не предназначен для быть простым в использовании инструментом диагностики. Он был создан для того, чтобы иметь возможность быстро проверить, правильно ли было снято изображение по медленному сетевому каналу, поэтому в ситуации, когда вы определенно не можете ожидать, что полное изображение будет передано по медленной линии более одного раза.
Если существующей документации для ddrescue
и ddrescue-verify
вам недостаточно, боюсь, я больше не смогу вам помочь (нет времени, извините). Единственное, что я могу предложить, - это отрывок из Wiki , надеюсь, немного адаптированный к вашим потребностям:
Исходная команда для создания изображения из исходного кода была примерно такой: запустить в текущем рабочем каталоге :
ddrescue -d /dev/source image.img image.log
Теперь создайте данные проверки:
ddrescue-verify image.img image.log > image.verify
Теперь запустите процесс проверки / сравнения:
ddrescue-verify -udis0 /dev/source image.verify > image.diff
Это быстро, так как ddrescue-verify
пытается пропустить исходный код
части , которые отмечены как нечитаемые в image.log
(отсюда вариант -d
).
В выводе вы увидите различия.
Вы также можете заглянуть в image.diff
, чтобы увидеть различия.Этот файл имеет тот же формат, что и файл журнала ddrescue
, но отличия отмечены как «непрочитанные», поэтому вы можете проанализировать его с помощью ddrescuelog
.
Чтобы выявить различия, вы также можете сделать следующее:
# The next 2 commands take a snapshot of your original image
# Probably use lvm or ZFS snapshot to not duplicate all data:
cp image.img image.orig.img
cp image.log image.orig.log
# Now pull in the differences
cp -f image.diff image.log
ddrescue /dev/source image.img image.log
Теперь вы обновили image.img
и image.log
к найденным изменениям. Это быстро, так как это пытается прочитать только измененные части (разница обнаруживается на каждом 1 МБ по умолчанию, поэтому будет скопировано немного больше).
Примечание: этот последний шаг разработан таким образом, что вы можете повторять весь этот процесс столько раз, сколько вам нужно.
Мне жаль, что я не могу представить вам полное решение. Но восстановить данные путем угадывания в непонятной ситуации - это ничего, что можно сделать из коробки.
Однако, используя моментальные снимки (я рекомендую ZFS или BTRFS, поскольку они намного быстрее, чем LVM) в сочетании со способом сравнения и выявления различий, вы, возможно, сможете выяснить, что правильно, а что нет.