Como posso mesclar dois resgates diferentes?
(Isso assume o% GNUddrescue
)
tl; dr :
-
Gere um arquivo de mapeamento / logfile para a primeira cópia:
ddrescue --generate-mode infile outfile mapfile
-
Crie uma cópia mesclada de 2º → 1º conforme descrito em um postar na lista de e-mail
ddrescue
:ddrescue -m logfile2 image2 image1 logfile1
1. Gere um arquivo de log para a primeira imagem
Isso é um pouco complicado, já que você efetivamente não tem um arquivo de log para a primeira passagem. No entanto, você pode gerar um:
When ddrescue is invoked with the
--generate-mode
option it operates in "generate mode", which is different from the default "rescue mode". That is, if you use the '--generate-mode' option, ddrescue does not rescue anything. It only tries to generate a mapfile for later use....
Don't despair (yet). Ddrescue can in some cases generate an approximate mapfile, from infile and the (partial) copy in outfile, that is almost as good as an exact mapfile. It makes this by simply assuming that sectors containing all zeros were not rescued.
... you can generate an approximate mapfile with this command:
ddrescue --generate-mode infile outfile mapfile
(ênfase minha)
do GNU ddrescue
manual ; seção 12, ' Gerar modo '.
Então você pode fazer isso para a primeira imagem (o que eu sugiro renomear para evitar confusão, por exemplo, core-1.img
):
ddrescue -G /dev/sdb2 core-1.img core-1.log
"Ainda estou lendo de /dev/sdb
, gerando um log de intercomunicação com isso?"
Observe que ddrescue
reconstrói a partir do outfile
(neste caso, core-1.img
) principalmente, com muito poucas leituras de infile
. Eu testei isso com 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
Portanto, é seguro executar isso enquanto outro processo está rodando em sdb
(no caso do OP, outra tentativa de resgate em uma partição diferente ), pois as leituras são insignificantes.
2. Mesclar as duas cópias parciais
Esse tipo de situação surgiu antes :
So now I have two partial images of the drive that mostly don't overlap... and two matching log files to go with them that define the good areas and slow areas skipped.
Felizmente, eles podem ser mesclados usando --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'
E a solução para o problema semelhante envolvia essa opção :
you can merge the images by typing:
cd dir1 ddrescue -m dir2/logfile dir2/image image logfile
This creates the files dir1/logfile dir1/image with all the data currently rescued. Then you can continue the rescue for example like this:
No seu caso, supondo que você tenha gerado um arquivo de log para core.img
e rotulado como 1
, e mantido o core.ing
e core.log
como 2
(para que não haja mais confusão!):
ddrescue -m core-2.log core-2.img core-1.img core-1.log