Wie kann ich zwei verschiedene Rettungsaktionen zusammenführen?
(Dies setzt GNU voraus ddrescue
)
tl; dr :
Generieren Sie eine Mapdatei / Logdatei für die erste Kopie:
ddrescue --generate-mode infile outfile mapfile
Erstellen Sie eine zusammengeführte Kopie von 2nd → 1st, wie in einem Beitrag an die
ddrescue
Mailingliste beschrieben :ddrescue -m logfile2 image2 image1 logfile1
1. Generieren Sie eine Protokolldatei für das erste Image
Dies ist etwas kompliziert, da Sie für den ersten Durchgang praktisch keine Protokolldatei haben. Sie können jedoch eine generieren:
Wenn ddrescue mit der
--generate-mode
Option aufgerufen wird, arbeitet es im "Generatormodus", was sich vom Standard "Rettungsmodus" unterscheidet. Das heißt, wenn Sie die Option "--generate-mode" verwenden, rettet ddrescue nichts. Es wird nur versucht, eine Map-Datei zur späteren Verwendung zu generieren....
Verzweifle nicht (noch). Ddrescue kann in einigen Fällen eine ungefähre Map-Datei erzeugen, aus infile und der (partiellen) Kopie in outfile, die fast so gut ist wie eine exakte Map-Datei. Dies geschieht, indem einfach davon ausgegangen wird, dass Sektoren, die alle Nullen enthalten, nicht gerettet wurden .
... Sie können mit diesem Befehl eine ungefähre Map-Datei erzeugen:
ddrescue --generate-mode infile outfile mapfile
(Hervorhebung meines)
aus dem GNU- ddrescue
Handbuch ; Abschnitt 12, ' Erzeugungsmodus '.
So können Sie dies für das erste Bild tun (was ich zum Umbenennen empfehle, um Verwirrung zu vermeiden, z. B. core-1.img
):
ddrescue -G /dev/sdb2 core-1.img core-1.log
"Ich lese noch /dev/sdb
, wird das Generieren eines Protokolls damit zusammenhängen?"
Beachten Sie, dass die ddrescue
Rekonstruktion aus outfile
(in diesem Fall core-1.img
) in erster Linie mit sehr wenigen Lesevorgängen erfolgt infile
. Ich habe das getestet mit 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
Daher ist es sicher, diesen Vorgang auszuführen, während ein anderer Prozess läuft sdb
(im Falle eines anderen Rettungsversuches auf einer anderen Partition ), da die Lesevorgänge vernachlässigbar sind.
2. Führen Sie die beiden Teilkopien zusammen
Diese Art von Situation ist schon früher aufgetaucht :
Jetzt habe ich zwei Teilabbilder des Laufwerks, die sich meist nicht überlappen ... und zwei dazu passende Protokolldateien, die die guten und die ausgelassenen Bereiche definieren.
Glücklicherweise können sie mit folgendem zusammengeführt werden --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`
Und die Lösung für das ähnliche Problem beinhaltete diese Option :
Sie können die Bilder zusammenführen, indem Sie Folgendes eingeben:
cd dir1 ddrescue -m dir2/logfile dir2/image image logfile
Dadurch werden die Dateien dir1 / logfile dir1 / image mit allen aktuell geretteten Daten erstellt. Dann können Sie die Rettung beispielsweise wie folgt fortsetzen:
In Ihrem Fall, vorausgesetzt, Sie haben eine Protokolldatei für sie erstellt core.img
und gekennzeichnet 1
, und behalten Sie das core.ing
und core.log
als 2
(damit es nicht zu mehr Verwirrung kommt!):
ddrescue -m core-2.log core-2.img core-1.img core-1.log