Ich versuche, mit dem folgenden Befehl Daten von einer ziemlich beschädigten CD zu kopieren:
dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress
Allerdings wurde die Verbindung zum „Of“-Gerät getrennt und der DD wurde gestoppt (Ausgabe unten).
...
dd: error reading '/dev/sr1': Input/output error
1074889+17746 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s
dd: writing to 'IDT.img': Input/output error
1074889+17747 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s
Kann ich fortfahren mit:
dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress seek=1092635 skip=1092635
Oder sollten die Such-/Überspringnummern beide sein 1092636
, oder sollten Überspringen/Suchen unterschiedlich sein, oder etwas ganz anderes?
PS: Ich weiß, dass ich dafür wahrscheinlich den falschen Befehl verwende, z. B. ist ddrescue wahrscheinlich besser. Aber ich hänge jetzt wahrscheinlich bei dd fest(?). Ich erwarte keine weiteren Fehler auf der Ausgabedateiseite.
Antwort1
Es sind Lesefehler aufgetreten, sodass die Optionen mit conv=sync,noerror
ziemlicher Sicherheit den Datenstrom verändert haben, was Ihre Ausgabedatei leider wertlos oder zumindest zu einer ungenauen Kopie gemacht hat.
Bei jedem fehlerhaften Lesevorgang (kurzer Lesevorgang) auf der Eingabe conv=sync
füllt die Option den Block mit NUL-Bytes auf. Der dd
Befehl versucht, den Eingabestrom dort fortzusetzen, wo er aufgehört hat, aber in die Ausgabe ist jetzt eine unbekannte Anzahl von NUL-Bytes eingefügt.
Sie sollten die Anwendung beenden dd
undddrescue
, das zur Wiederherstellung von Daten von fehlerhaften Medien erstellt wurde.
Referenzierte Antworten zu ähnlichen Themen
- Was bedeuten die beiden Zahlen jeweils in den „A+B-Datensatz“-Statistiken von dd?
- Beim Klonen einer 1-TB-Festplatte auf eine 1,2-TB-Festplatte mit dd wird die Meldung „Kein Speicherplatz mehr auf dem Gerät“ angezeigt.
- Wann ist dd zum Kopieren von Daten geeignet? (oder wann sind read() und write() partiell)
- Was macht dd conv=sync,noerror?
Antwort2
VerwendenAbonnieren. Es kann beschädigte Medien lesen und dabei beschädigte Teile „erhalten“, was bei dd nicht möglich ist.
Stellen Sie sich Ihre Originaldaten vor:
+-+-+-+-+-+-+-+-+-+-+-+-+
|a b c d e f g h i j k l|
+-+-+-+-+-+-+-+-+-+-+-+-+
Nach Beschädigung ( X
) sehen sie so aus:
+-+-+-+-+-+-+-+-+-+-+-+-+
|a b c X X X X h i j k l|
+-+-+-+-+-+-+-+-+-+-+-+-+
Was dd conv=sync,noerror lauten wird:
+-+-+-+-+-+-+-+-+
|a b c h i j k l|
+-+-+-+-+-+-+-+-+
Was ddrescue lesen wird.
+-+-+-+-+-+-+-+-+-+-+-+-+
|a b c 0 0 0 0 h i j k l|
+-+-+-+-+-+-+-+-+-+-+-+-+
Wie Sie sehen, ist die von dd gelesene Originalnachricht verzerrt, und wenn Sie auf diese Weise ein Dateisystemabbild erstellen, wird es unbrauchbar. Sie können das ddrescue-Abbild problemlos mounten, was Ihnen hilft, wie gewohnt auf unbeschädigte Daten zuzugreifen und beschädigte Daten einfach beiseite zu legen und sich als Nächstes damit zu befassen.