Kopieren der Konsolenausgabe von dd in eine Datei sowie auf die Konsole

Kopieren der Konsolenausgabe von dd in eine Datei sowie auf die Konsole

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 ddkö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:

  1. Sie haben wahrscheinlich ein Pufferproblem ... Sie werden wahrscheinlich viele Zeilen auf einmal sehen und dann wieder nichts - schauen Sie sichunbuffer
  2. sudoMöglicherweise wird nach einem Kennwort gefragt, aber Sie haben die Eingabeaufforderung umgeleitet … es passiert also nichts.

verwandte Informationen