Gddrescue fragt nach einer Map-Datei, weigert sich jedoch, eine zu erstellen

478
Hashim

Ich verwende hier Beispiel 3 aus der Dokumentation von gddrescue, um eine Platte auf Null zu schreiben und anstehende fehlerhafte Sektoren darauf zu zwingen, neu zuzuordnen.

Dieselbe Dokumentation besagt an anderer Stelle:

Wenn Mapfile nicht vorhanden ist, wird sie von ddrescue erstellt.

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

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

... ich bekomme den Fehler:

ddrescue: Mapfile 'mapfile.txt' ist nicht vorhanden oder kann nicht gelesen werden.

Wenn ich renne:

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

... Ich bekomme eine abgeschnittene Version des gleichen Fehlers:

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

Ich benutze gddrescueunter Windows 7 über Cygwin.

Ist das ein Fehler bei der Cygwin-Implementierung von ddoder fehlt mir etwas?

0

1 Antwort auf die Frage

1
Kamil Maciorowski

Kein Fehler. Bei meinem Kubuntu ist es genauso. Ich denke, es liegt an der --fill-modeOption, die du benutzt hast. Dieser Modus hat ein eigenes Kapitel der Dokumentation . Was Sie vermissen, ist dieser Teil [Hervorhebung mein]:

Wenn ddrescuemit der aufgerufen wird, --fill-modeOption arbeitet es in „Füllmodus“, das ist verschieden von der Standardeinstellung „Rettungsmodus“. Das heißt, wenn Sie die --fill-modeOption verwenden, ddrescuerettet nichts. Es füllt nur mit Daten aus lesen infiledie Blöcke, outfilederen Status Charakter vonmapfile einem der Lettern fällt als Argument an die angegebene --fill-modeOption.

Dies bedeutet, dass --fill-modebereits ein vorhandenes vorhanden ist mapfile.


Was sind Status- und Typzeichen hier?

Der Ausdruck "Statuszeichen von mapfile" sollte gemäß diesem Fragment verstanden werden :

Das Statuszeichen ist eines davon:

Zeichenbedeutung
'?' Nicht versuchter Block
'*' fehlgeschlagener Block nicht getrimmt
'/' nicht gescrapierter Block
'-' fehlerhafter Block fehlerhafter Sektor (e)
'+' beendeter Block

Und hier ist ein Beispiel Mapfile:

# 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 ? 

"Typ-Zeichen, die als Argument für die --fill-modeOption angegeben sind", sind Zeichen, die unmittelbar danach erscheinen --fill-mode=.

Also wenn das mapfilewie im obigen Beispiel ist und Sie verwenden

  • --fill-mode=-, ddrescuefüllt dann nur 0x00000200Blöcke, die an der Position beginnen 0x00117000;
  • --fill-mode=?-*(Vorsicht Schale Globbing, unwahrscheinlich, aber nach wie vor), dann ddrescuewird die mit Fragmenten füllen ?, -oder *.
Mein schlechtes, ich hatte diese Antwort nicht wirklich gesehen, bekam aus irgendeinem Grund keine Benachrichtigung dafür. Ihre Antwort beantwortet die Frage und sieht so aus, als wäre sie die akzeptierte Antwort, aber es wäre wirklich nützlich, wenn Sie mir erklären könnten, was der letzte Satz tatsächlich bedeutet - ich habe ihn einige Male gelesen, bevor er diese Frage gestellt hat, aber er konnte es nicht verstehe, was es für mein Leben sagte. Insbesondere das * "..., dessen Statuszeichen aus der Map-Datei mit einem der als Argument angegebenen Zeichenzeichen übereinstimmt" * part. Was genau sind Statuszeichen und Typzeichen in reinem Englisch? Hashim vor 6 Jahren 0