Comment puis-je fusionner deux sauvetages différents?
(Cela suppose que GNU ddrescue
)
tl; dr :
Générez un mapfile / logfile pour la première copie: ddrescue --generate-mode infile outfile mapfile
Créez une copie fusionnée de 2nd → 1st comme décrit dans un message envoyé à la ddrescue
liste de diffusion :ddrescue -m logfile2 image2 image1 logfile1
1. Générez un fichier journal pour la première image
Ceci est légèrement compliqué car vous n’avez effectivement pas de fichier journal pour la première passe. Cependant, vous pouvez en générer un:
Lorsque l' --generate-mode
option ddrescue est appelée, elle fonctionne en "mode de génération", ce qui diffère du "mode de secours" par défaut. En d’autres termes, si vous utilisez l’option '--generate-mode', ddrescue ne sauve rien. Il essaie seulement de générer un fichier map pour une utilisation ultérieure.
...
Ne désespérez pas (encore). Ddrescue peut dans certains cas générer un mapfile approximatif, à partir de infile et une copie (partielle) dans outfile, qui est presque aussi bon qu'un mapfile exact. Cela se fait simplement en supposant que les secteurs contenant tous les zéros n’ont pas été sauvés .
... vous pouvez générer un mapfile approximatif avec cette commande:
ddrescue --generate-mode infile outfile mapfile
(c'est moi qui souligne)
du manuel GNUddrescue
; section 12, ' Mode de génération '.
Ainsi, vous pouvez le faire pour la première image (que je suggère de renommer pour éviter toute confusion, par exemple core-1.img
):
ddrescue -G /dev/sdb2 core-1.img core-1.log
"Je suis encore en train de lire /dev/sdb
, est-ce que la génération d'un journal va empêcher cela?"
Notez que ddrescue
reconstruit principalement à partir de outfile
(dans ce cas core-1.img
), avec très peu de lectures infile
. J'ai testé cela avec 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
Il est donc prudent de l'exécuter pendant qu'un autre processus est en cours d'exécution sdb
(dans le cas d'OP, une autre tentative de sauvetage sur une partition différente ), car les lectures sont négligeables.
2. Fusionner les deux copies partielles
Ce genre de situation a déjà surgi :
Alors maintenant, j'ai deux images partielles du lecteur qui ne se chevauchent généralement pas ... et deux fichiers journaux correspondants pour les accompagner qui définissent les bonnes zones et les zones lentes ignorées.
Heureusement, ils peuvent être fusionnés en utilisant --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`
Et la solution au problème similaire impliquait cette option :
vous pouvez fusionner les images en tapant:
cd dir1
ddrescue -m dir2/logfile dir2/image image logfile
Cela crée les fichiers dir1 / logfile dir1 / image avec toutes les données actuellement sauvées. Ensuite, vous pouvez continuer le sauvetage par exemple comme ceci:
Dans votre cas, en supposant que vous ayez généré un fichier journal pour, que vous les ayez core.img
étiquetés 1
, et que vous ayez conservé le core.ing
et core.log
comme 2
(pour éviter toute confusion!):
ddrescue -m core-2.log core-2.img core-1.img core-1.log