Wie setze ich den Ddrescue-Prozess fort?

9

Ich muss meine 1 TB USB HD wiederherstellen. Ich benutze ddrescue, um dies zu erreichen. Gibt es eine Möglichkeit, die ich fortsetzen kann, ddrescuesobald ich sie gestartet habe?

Ich benutze den Befehl:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image
confiq
quelle

Antworten:

14

ddrescue kann fortgesetzt werden, erfordert jedoch eine Protokolldatei, um dies zu tun. Die Protokolldatei zeichnet den Fortschritt auf, den ddrescue bisher gemacht hat, und ein Neustart von ddrescue liest die Protokolldatei und beginnt dort, wo sie aufgehört hat.

Die Protokolldatei wäre der dritte Parameter:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

Wenn Sie bereits einen ddrescue-Lauf ohne Protokolldatei gestartet und abgebrochen haben, wird ddrescue beim nächsten Ausführen am Anfang gestartet, da keine Aufzeichnung darüber vorhanden ist, was bereits wiederhergestellt wurde.

Hinweis : ddrescue und dd_rescue sind unterschiedliche Programme.

shf301
quelle
1
Wenn ich also anfänglich mit einer Protokolldatei begonnen habe und denselben Befehl erneut ausführen werde, wird er automatisch von der letzten Protokollposition fortgesetzt. / edit: Es beginnt an der letzten Position.
Qwerty
6

Auch wenn Sie vergessen haben, eine Protokolldatei anzugeben, besteht möglicherweise Hoffnung:

Generierungsmodus

Sie haben das Tutorial also nicht gelesen und ddrescue ohne Protokolldatei gestartet. Jetzt, zwei Tage später, stürzte Ihr Computer ab und Sie können nicht wissen, wie viel Daten ddrescue gespeichert hat. Und noch schlimmer, Sie können die Rettung nicht wieder aufnehmen. Sie müssen es von Anfang an neu starten.

Oder Sie haben mit dem Kopieren eines Laufwerks begonnen dd conv=noerror,syncund befinden sich jetzt in der oben beschriebenen Situation. Beachten Sie in diesem Fall, dass Sie eine von dd erstellte Kopie nur verwenden können, wenn sie mit dem syncKonvertierungsargument aufgerufen wurde .

Verzweifle (noch) nicht. Ddrescue kann in einigen Fällen aus der Eingabedatei und der (Teil-) Kopie eine ungefähre Protokolldatei generieren, die fast so gut ist wie eine exakte Protokolldatei. Dies geschieht, indem einfach angenommen wird, dass Sektoren, die alle Nullen enthalten, nicht gerettet wurden.

Wenn das Ziel der Kopie jedoch ein Laufwerk oder eine Partition war (oder eine vorhandene reguläre Datei und ein Abschneiden nicht angefordert wurden), müssen Sie ddrescue höchstwahrscheinlich von Anfang an neu starten. (Diesmal natürlich mit einer Logdatei). Der Grund dafür ist, dass möglicherweise alte Daten im Laufwerk vorhanden sind, die noch nicht überschrieben wurden, und daher möglicherweise nicht ausprobiert, aber nicht Null sind.

Wenn Sie beispielsweise zum ersten Mal einen der folgenden Befehle ausprobiert haben:

ddrescue infile outfile

oder

dd if=infile of=outfile conv=noerror,sync

Mit diesem Befehl können Sie eine ungefähre Protokolldatei erstellen:

ddrescue --generate-mode infile outfile logfile
Miles Wolbe
quelle
Wird die zu rettende Festplatte infil und die Rettungsdaten ausgelagert?
Bastion
3

Wie andere bereits gesagt haben, sollten Sie als dritten Parameter immer eine Protokolldatei angeben, die die Wiederaufnahme ermöglicht. Da du das nicht getan hast, wird dir das hier nicht helfen. Wenn Sie ungefähr wissen, zu welchem ​​Punkt der Prozess gelangt ist, können Sie die Parameter --input-positionund verwenden --output-position, um an diesem Punkt zu beginnen (stellen Sie sicher, dass beide Parameter auf denselben Wert eingestellt sind, da sonst die Ausgabe beschädigt wird).

mgorven
quelle
2

Da Sie keine Protokolldatei als dritten Parameter angegeben haben, kann die Wiederaufnahme nicht automatisch erfolgen. Sie können eine Protokolldatei von Hand erstellen, wenn Sie die bereits geretteten Sektoren kennen. Die Syntax ist einfach. Starten Sie einfach eine weitere Dummy-Rettung für eine andere Datei, während Sie ein Protokoll angeben, und lassen Sie es verschiedene Bereiche lesen. Bearbeiten Sie dann das Protokoll, um die bereits geretteten Bereiche in Ihrer ersten Datei darzustellen. Führen Sie nun Ihren vorherigen Befehl erneut aus, geben Sie jedoch den Namen der Protokolldatei als dritten Parameter an. ddrescue wird dann auf dem ersten nicht erprobten Sektor fortgesetzt.

Gurken Papst
quelle
2

Per https://wiki.archlinux.org/index.php/Disk_cloning scheint es, dass mit dem conv=noerror,syncSchalter ddtatsächlich Nullen am Ende eines Blocks hinzugefügt werden , nicht genau dort, wo die Lesefehler aufgetreten sind. Dies steht im Widerspruch zu den Informationen in der Antwort von Miles Wolbe vom 29.08.2013.

Wenn zum Beispiel eine korrekte Sequenz 198123283vorliegt und in der Mitte ein Lesefehler auftritt 198283000, wird nicht geschrieben 198000283.

Falls also tatsächlich Lesefehler aufgetreten sind, ist die vorgeschlagene Methode nicht genau - es gibt Bereiche, die lesbar gewesen wären, die mit Nullen gefüllt sind, jedoch als "gerettet" betrachtet werden.

Übrigens empfiehlt es sich, einen solchen Wiederherstellungsversuch zu starten, indem Sie das Ziellaufwerk mit Nullen füllen (oder zumindest den freien Speicherplatz, der beispielsweise mit WinHex ausgeführt werden kann).

GabrielB
quelle
Hallo GabrielB, willkommen bei Super User. Ich habe Ihre Antwort bearbeitet, bin mir aber nicht sicher, ob es ausreicht, allein zu stehen. Vielleicht können Sie sie weiter bearbeiten, um einen kleinen Abschnitt aufzunehmen, der auch die ursprüngliche Frage behandelt?
Bertieb
Wenn ich mich richtig erinnere, wollte ich Miles Wolbes Antwort kommentieren, konnte es aber nicht als neues Mitglied, also musste ich eine neue Antwort posten. Wenn es möglich ist, können Sie den obigen Beitrag an die Stelle verschieben, an der er erscheinen soll, und diesen löschen.
GabrielB