Wie bearbeite ich die ddrescue-Protokolldatei, um sie an einer bestimmten Stelle wieder aufzunehmen?

0

Ich versuche, GNU ddrescuemithilfe der Protokolldatei ein Image einer 500-GB-Festplatte zu erstellen. Ich habe 420GB und dann habe ich damit aufgehört ctrl+c. Nach einiger Zeit habe ich den Befehl erneut ausgeführt und es wurde erneut gestartet, obwohl eine Protokolldatei vorhanden war.

Die alte Protokolldatei wurde von überschrieben ddrescue.

Wie gesagt, meine Image-Datei hat bisher 420 GB von einer 500-GB-Festplatte. Wie bearbeite ich die Protokolldatei oder sage ddrescue, dass ich von etwa 420 GB aus fortfahren soll? Ich brauchte TAGE ddrescue, um auf 420 GB zu kommen. Ich möchte diesen Vorgang nicht noch einmal neu starten.

Hier ist die Protokolldatei:

# Mapfile. Created by GNU ddrescue version 1.21
# Command line: ddrescue /dev/sdd /media/myname/New Volume4/backup.dmg /media/myname/New Volume4/logfile.log
# Start time:   2016-05-17 13:08:39
# Current time: 2016-05-17 13:08:48
# Copying non-tried blocks... Pass 1 (forwards)
# current_pos  current_status
0x0C770000     ?
#      pos        size  status
0x00000000  0x0C770000  +
0x0C770000  0x7464496000  ?

Dies ist, was sudo fdisk -lfür die Festplatte, für die ich ein Image erstellen möchte, sagt:

Disk /dev/sdd: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disk identifier: 0xeea5da13

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1              63   976768064   488384001    7  HPFS/NTFS/exFAT
fuzzybabybunny
quelle

Antworten:

1

Die 0x0C770000hexadezimale Zahl in Ihrer Protokolldatei zeigt an, dass etwa 200 MiB gelesen wurden. Dies bestätigt Ihre Aussage, die von vorne ddrescuebegonnen hat.

Um Änderungen vorzunehmen, ermitteln Sie zunächst die ungefähre Größe Ihres Bildes in hexadezimaler Darstellung:

printf "%x\n" $(($(wc -c < "/media/myname/New Volume4/backup.dmg")-4096))

(Ich habe 4096nur für den Fall von der tatsächlichen Größe abgezogen . Es ist wahrscheinlich unnötig; wird aber nicht schaden.)

Ersetzen Sie dann jeden 0C770000in Ihrem Protokoll durch die resultierende Nummer (drei Ersetzungen erforderlich). Beachten Sie, dass es ein 0xPräfix gibt, das Sie nicht berühren sollten. Um dies zu tun mit sed:

sed -i 's/0C770000/the_resulted_number_here/' "/media/myname/New Volume4/logfile.log"

Hinweis: Ich weiß nicht, warum der zweite Versuch von vorne begonnen hat, anstatt fortzufahren. Die Protokolldatei ist jetzt (fast) so, wie sie es nach Ihrem unterbrochenen Durchlauf war ( wenn keine Lesefehler aufgetreten sind ), sodass dieses Verhalten möglicherweise aus demselben (noch unbekannten) Grund erneut auftritt.

Neustart ddrescue:

ddrescue /dev/sdd "/media/myname/New Volume4/backup.dmg" "/media/myname/New Volume4/logfile.log"
Kamil Maciorowski
quelle
kurze frage: ist es wichtig, welche dateierweiterung ich als speichere? backup.dmggegen backup.img? Beschädige ich etwas, wenn ich die Datei durch Ändern der Dateierweiterung umbenenne?
Fuzzybabybunny
1
Unter Linux sollte das überhaupt keine Rolle spielen. In den seltensten Fällen folgen einige Programme der Windows-Konvention und achten auf die Dateierweiterung. Dies kann jedoch nützlich sein, um Dateinamen zu filtern. Sie beschädigen nichts.
Kamil Maciorowski
OK danke. Wenn die unvollständige 420-GB-Datei .dmg ist, kann ich sie in .iso umbenennen und das Imaging mit ddrescue beenden, ohne dass dies Auswirkungen hat. Meine Vermutung ist, dass das Ändern der Dateierweiterung tatsächlich keine Daten in der Datei selbst ändert?
Fuzzybabybunny
Richtig. Durch Ändern der Dateierweiterung werden tatsächlich keine Daten in der Datei selbst geändert. Eine weitere Sache: Erweiterung ist DOS-Sache. Unter Linux haben wir einen Dateinamen (mit oder ohne "."). Durch Ändern der Erweiterung wird eine Datei tatsächlich umbenannt.
Kamil Maciorowski