Gddrescue fordert eine Map-Datei an, weigert sich jedoch, eine zu erstellen

Gddrescue fordert eine Map-Datei an, weigert sich jedoch, eine zu erstellen

Ich benutzeBeispiel 3 aus der Dokumentation von gddrescue hierum eine Festplatte auf Null zu schreiben und eine Neuzuweisung ausstehender fehlerhafter Sektoren darauf zu erzwingen.

In derselben Dokumentation heißt es an anderer Stelle:

Wenn die Map-Datei nicht vorhanden ist, wird sie von ddrescue erstellt.

Aber wenn ich Beispiel 3 fast wörtlich ausführe:

ddrescue -vvvv --fill-mode=- -f --synchronous /dev/zero /dev/sdc mapfile.txt

...ich erhalte die Fehlermeldung:

ddrescue: Mapfile „mapfile.txt“ existiert nicht oder ist nicht lesbar.

Wenn ich ausführe:

ddrescue -vvvv --fill-mode=- -f --synchronous /dev/zero /dev/sdc -m /cygdrive/b/users/user/desktop/mapfile.txt

... erhalte ich eine gekürzte Version desselben Fehlers:

ddrescue: Mapfile '/cygdrive/b/users/user/desktop/mapfile.txt' existiert nicht oder ist nicht

Ich verwende es gddrescueunter Windows 7 über Cygwin.

Handelt es sich hier um einen Fehler bei der Cygwin-Implementierung von ddoder übersehe ich etwas?

Antwort1

Kein Fehler. Auf meinem Kubuntu ist es dasselbe. Ich denke, es liegt an der --fill-modeOption, die Sie verwendet haben. Dieser Modus hatein eigenes Kapitel der Dokumentation. Was Ihnen fehlt, ist dieser Teil [Hervorhebung von mir]:

Wenn ddrescuemit der Option aufgerufen wird, --fill-modearbeitet es im "Füllmodus", d.h.andersaus dem Standard-"Rettungsmodus". Das heißt, wenn Sie die --fill-modeOption verwenden, ddrescuewird nichts gerettet. Es werden nur Daten aus infileden Blöcken geladen, outfilederen Statuszeichenausmapfilemit einem der Typzeichen übereinstimmt, die als Argument für die --fill-modeOption angegeben sind.

Dies bedeutet, --fill-modedass ein bereits vorhandenes erforderlich ist mapfile.


Was sind hier Statuszeichen und Typzeichen?

Der Ausdruck „Statuscharakter von mapfile“ sollte gemäß verstanden werdendieses Fragment:

Das Statuszeichen ist eines dieser:

Zeichen Bedeutung
'?' nicht versuchter Block
'*' fehlgeschlagener Block nicht getrimmt
'/' fehlgeschlagener Block nicht gescrapt
'-' fehlgeschlagener Block fehlerhafte Sektoren
'+' fertiger Block

Und hier ist eine Beispiel-Mapdatei:

# Mapfile. Created by GNU ddrescue version 1.23
# Command line: ddrescue -d -c18 /dev/fd0 fdimage mapfile
# Start time:   2015-07-21 09:37:44
# Current time: 2015-07-21 09:38:19
# Copying non-tried blocks... Pass 1 (forwards)
# current_pos  current_status  current_pass
0x00120000     ?               1
#      pos        size  status
0x00000000  0x00117000  +
0x00117000  0x00000200  -
0x00117200  0x00001000  /
0x00118200  0x00007E00  *
0x00120000  0x00048000  ?

Jetzt sind „Typzeichen, die als Argument für die --fill-modeOption angegeben sind“ Zeichen, die direkt nach erscheinen --fill-mode=.

Wenn das also mapfilewie im obigen Beispiel ist und Sie verwenden

  • --fill-mode=-, dann ddrescuewerden nur 0x00000200Blöcke ab der Position ausgefüllt 0x00117000;
  • --fill-mode=?-*(Vorsicht vor Shell-Globbing, unwahrscheinlich, aber trotzdem), dann werden die mit , oder ddrescuemarkierten Fragmente ausgefüllt .?-*

verwandte Informationen