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 gddrescue
unter Windows 7 über Cygwin.
Handelt es sich hier um einen Fehler bei der Cygwin-Implementierung von dd
oder übersehe ich etwas?
Antwort1
Kein Fehler. Auf meinem Kubuntu ist es dasselbe. Ich denke, es liegt an der --fill-mode
Option, die Sie verwendet haben. Dieser Modus hatein eigenes Kapitel der Dokumentation. Was Ihnen fehlt, ist dieser Teil [Hervorhebung von mir]:
Wenn
ddrescue
mit der Option aufgerufen wird,--fill-mode
arbeitet es im "Füllmodus", d.h.andersaus dem Standard-"Rettungsmodus". Das heißt, wenn Sie die--fill-mode
Option verwenden,ddrescue
wird nichts gerettet. Es werden nur Daten ausinfile
den Blöcken geladen,outfile
deren Statuszeichenausmapfile
mit einem der Typzeichen übereinstimmt, die als Argument für die--fill-mode
Option angegeben sind.
Dies bedeutet, --fill-mode
dass 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 BlockUnd 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-mode
Option angegeben sind“ Zeichen, die direkt nach erscheinen --fill-mode=
.
Wenn das also mapfile
wie im obigen Beispiel ist und Sie verwenden
--fill-mode=-
, dannddrescue
werden nur0x00000200
Blöcke ab der Position ausgefüllt0x00117000
;--fill-mode=?-*
(Vorsicht vor Shell-Globbing, unwahrscheinlich, aber trotzdem), dann werden die mit , oderddrescue
markierten Fragmente ausgefüllt .?
-
*