
Ich versuche, mit dd ein Festplatten-Image zu erstellen, das E/A-Fehler ausgibt. Aus diesem Grund habe ich den Parameter „noerror“ hinzugefügt, möchte aber die Fehler verfolgen, um eine Wiederherstellung zu versuchen.
Mein aktueller Versuch ist folgender:
sudo dd if=/dev/sdb bs=1M conv=sync,noerror of=output.img 2>&1 | tee output.log
Damit werden sowohl output.img als auch output.log erstellt, beide haben jedoch eine Größe von 0 Bytes und beim Beenden des DD wird keine Ausgabe an das Terminal zurückgegeben.
Ich würde dd lieber mit der Option „noerror“ ausprobieren, bevor ich Tools wie ddrescue verwende, da ich mit dd besser vertraut bin.
Außerdem enthält dieses Laufwerk eine einzelne NTFS-Partition, daher wären Hinweise zur Wiederherstellung einer NTFS-Partition mit fehlenden Bits willkommen (das Laufwerk ist 500 GB groß und der erste Fehler, der mir begegnet ist, betraf etwa 30 GB).
Danke!
Antwort1
Ich empfehle Ihnen dringend, einfachddrescue
- verzichten Sie nicht auf ein für die jeweilige Aufgabe geeignetes Werkzeug, die Bedienung ist nicht schwer und Sie ersparen sich einiges an Stress.
Der Aufruf ist einfach:
Erster Lauf:
-p
- Speicherplatz vorab zuweisen-b 4M
- große Sektorengröße für höhere Geschwindigkeit nutzen
ddrescue -p -b 4M ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
Nachfolgende Ausführungen: (im Gegensatz zu dd
können Sie es mehrmals ausführen und es wird dort fortgesetzt, wo es aufgehört hat, indem auf die Protokolldatei verwiesen wird)
-b 512
- Verwenden Sie eine kleinere Sektorgröße, um die Lücken zu füllen-r 10
- mehrere Wiederholungsdurchläufe verwenden
ddrescue -b 512 -r 10 ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
Abschnitte mit Lesefehlern enthalten (standardmäßig) Nullen und Sie erhalten am Ende eine Protokolldatei ähnlich der folgenden:
# pos size status
0x00000000 0x00014E00 +
0x00014E00 0x00000200 -
0x00015000 0x00005800 +
0x0001A800 0x00000200 -
0x0001AA00 0x00028000 +
0x00042A00 0x00000200 -
0x00042C00 0x00125400 +
Die markierten Linien +
stellen fehlerfreie Bereiche dar, die markierten Linien -
stellen Bereiche mit Fehlern dar.
Abhängig von der Art Ihrer Lesefehler müssen Sie möglicherweise einige der folgenden Optionen prüfen:
-d, --direct
use direct disc access for input file
-K, --skip-size=<min>[,<max>]
initial size to skip on read error [64 KiB]
-M, --retrim
mark all failed blocks as non-trimmed
-O, --reopen-on-error
reopen input file after every read error
-r, --retry-passes=<n>
exit after <n> retry passes (-1=infinity) [0]
-R, --reverse
reverse the direction of all passes
Als direkte Antwort auf Ihre Frage:
- Sie haben wahrscheinlich ein Pufferproblem ... Sie werden wahrscheinlich viele Zeilen auf einmal sehen und dann wieder nichts - schauen Sie sich
unbuffer
sudo
Möglicherweise wird nach einem Kennwort gefragt, aber Sie haben die Eingabeaufforderung umgeleitet … es passiert also nichts.