Как я могу объединить два разных спасения?
(Это предполагает GNU ddrescue
)
тл; др:
Создайте mapfile/logfile для первой копии: ddrescue --generate-mode infile outfile mapfile
Создайте объединенную копию из 2-го → 1-го, как описано в сообщении в ddrescue
рассылки ddrescue : ddrescue -m logfile2 image2 image1 logfile1
1. Создайте файл журнала для первого изображения
Это немного сложно, поскольку у вас фактически нет файла журнала для первого прохода. Тем не менее, вы можете сгенерировать один:
Когда ddrescue вызывается с --generate-mode
он работает в "режиме генерации", который отличается от "режима восстановления" по умолчанию. То есть, если вы используете опцию --generate-mode, ddrescue ничего не спасет. Он только пытается сгенерировать файл-файл для последующего использования.
...
Не отчаивайтесь (пока). В некоторых случаях Ddrescue может генерировать приблизительный файл карты из infile и (частичной) копии в файле outfile, что почти так же хорошо, как точный файл map. Это можно сделать, просто предполагая, что сектора, содержащие все нули, не были спасены.
... вы можете создать приблизительный файл карты с помощью этой команды:
ddrescue --generate-mode infile outfile mapfile
(акцент мой)
из руководства по ddrescue
GNU ; раздел 12 « Режим генерации ».
Таким образом, вы можете сделать это для первого изображения (которое я предлагаю переименовать, чтобы избежать путаницы, например, core-1.img
):
ddrescue -G /dev/sdb2 core-1.img core-1.log
"Я все еще читаю из /dev/sdb
, будет ли создание журнала мешать этому?"
Обратите внимание, что ddrescue
восстанавливает в основном из outfile
(в данном случае core-1.img
), с очень небольшим чтением из infile
. Я проверил это с inotifywatch
:
$ inotifywatch 840-linux.img # infile
$ inotifywatch 840-linux2.img # outfile
$ inotifywatch 840-linux2.log
$ ddrescue -G 840-linux.img 840-linux2.img 840-linux2.log
total close_nowrite open filename
6 3 3 840-linux.img
17467 17465 1 1 840-linux2.img
total access modify close_write close_nowrite open filename
196 1 189 2 1 3 840-linux2.log
Так что это безопасно выполнять, пока другой процесс выполняется на sdb
(в случае OP, еще одна попытка восстановления в другом разделе), так как чтение незначительно.
2. Объединить две частичные копии
Такая ситуация возникла раньше:
Итак, теперь у меня есть два частичных образа диска, которые в основном не перекрываются ... и два соответствующих файла журнала, которые идут вместе с ними, которые определяют хорошие области и пропущенные медленные области.
К счастью, их можно объединить с помощью --domain-mapfile
:
--domain-mapfile=file
Restrict the rescue domain to the blocks marked as
finished in the mapfile file. This is useful for
merging partially recovered images of backups, or if
the destination drive fails during the rescue. Use
'-' as file to read from standard in`
И решение аналогичной проблемы включало этот вариант:
Вы можете объединить изображения, набрав:
cd dir1
ddrescue -m dir2/logfile dir2/image image logfile
Это создает файлы dir1/logfile dir1/image со всеми данными, которые были спасены в данный момент. Затем вы можете продолжить спасение, например, так:
В вашем случае, если вы сгенерировали файл журнала для core.img
и отметили их 1
, а core.ing
и core.log
2
(чтобы не было путаницы!):
ddrescue -m core-2.log core-2.img core-1.img core-1.log