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

317
Ansel Pol

Ich versuche, eine Festplatte mit dd abzubilden, was E / A-Fehler ergibt. Als Ergebnis habe ich den Parameter 'noerror' hinzugefügt, aber ich möchte die Fehler nachverfolgen, um die 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 Byte und beim Beenden des dd wird keine Ausgabe an das Terminal ausgegeben.

Ich würde es vorziehen, dd mit der Option 'noerror' vor Tools wie ddrescue auszuprobieren, da ich mit dd vertraut bin.

Dieses Laufwerk enthält außerdem eine einzige NTFS-Partition. Daher sind Hinweise auf das Wiederherstellen einer NTFS-Partition mit fehlenden Bits zu empfehlen (das Laufwerk ist 500 GB groß und der erste Fehler, der bei mir aufgetreten ist, betrug etwa 30 GB).

Vielen Dank!

0
Selbst wenn Sie "dd" stoppen, sollte es dennoch Beendigungsnachrichten mit den Datensätzen in und aus und der Anzahl der kopierten Bytes generieren, es sei denn, Sie verwenden "kill -15". AFH vor 6 Jahren 0
Ich bin mir dessen bewusst und habe es gerade mit ^ C beendet. Ansel Pol vor 6 Jahren 0
Dann sollten Sie die zusammenfassenden Zeilen erhalten haben, es sei denn, die Annahme von [Attie] (https://superuser.com/users/707676/attie) stimmt, dass "dd" niemals startet, obwohl ich keinen Lauf mit Nein reproduzieren kann Ausgabe - Ich bekomme immer die Zusammenfassungszeilen. AFH vor 6 Jahren 0
Sie können prüfen, ob `dd` tatsächlich ausgeführt wird, nachdem Sie den Befehl` sudo` gestartet haben, indem Sie `ps -efl | eingeben grep "dd" in einem anderen Terminal. AFH vor 6 Jahren 1

1 Antwort auf die Frage

1
Attie

Ich würde dringend empfehlen, dass Sie es einfach verwenden ddrescue- vermeiden Sie es nicht, ein Werkzeug zu verwenden, das für den Job geeignet ist. Das Ausführen ist nicht schwer und Sie sparen sich etwas Stress.

Aufruf ist einfach:

Erster Lauf:

  • -p - Platz vorab zuweisen
  • -b 4M - Verwenden Sie große Sektoren für die Geschwindigkeit
ddrescue -p -b 4M $ $ $ 

Nachfolgende Läufe: (Im Gegensatz zu ddkönnen Sie es mehrmals ausführen und fahren dort fort, wo es aufgehört hat, indem Sie auf die Protokolldatei verweisen.)

  • -b 512 - Verwenden Sie eine kleinere Sektorgröße, um die Lücken zu füllen
  • -r 10 - Verwenden Sie mehrere Wiederholungsdurchläufe
ddrescue -b 512 -r 10 $ $ $ 

Abschnitte mit Lesefehlern enthalten (standardmäßig) Nullen. Am Ende erhalten Sie eine Protokolldatei, die der folgenden ähnelt:

# pos size status 0x00000000 0x00014E00 + 0x00014E00 0x00000200 - 0x00015000 0x00005800 + 0x0001A800 0x00000200 - 0x0001AA00 0x00028000 + 0x00042A00 0x00000200 - 0x00042C00 0x00125400 + 

Markierte Zeilen +sind fehlerfreie Regionen, markierte Zeilen -sind fehlerhafte Regionen.


Je nach Art der 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 nichts mehr - schauen Sie sich das an unbuffer
  2. sudo Möglicherweise werden Sie nach einem Kennwort gefragt, aber Sie haben die Eingabeaufforderung umgeleitet ... also passiert nichts.
Hätte die Option "-p" nicht lange (ungefähr ein paar Stunden, abhängig von der Geschwindigkeit, die ich mit dd erhielt: etwa 70 MB / s über USB3), um vor dem Start eine 500-GB-Datei auf dem Ziellaufwerk zu erstellen Rettung? Wenn es sich um ein "sudo" -Aufforderungsproblem handelt, würde die "sudo" -Aufforderung sowie die Protokolldatei wegen "tee" nicht an das Terminal gesendet werden? Ansel Pol vor 6 Jahren 0
Ich wollte gerade mit "_no, weil spärliche Dateien" antworten, aber dann erinnerte ich mich daran, dass "ddrescue" das Erstellen einer spärlichen Datei vermeiden wird, es sei denn, Sie werden dazu aufgefordert ... Ich würde es begrüßen, wenn Sie es mit / ohne versuchen könnten und sehen würden, was Das Ergebnis ist! Attie vor 6 Jahren 0
Re `sudo` - Ich kann mich nicht genau erinnern, wenn es klug ist und das tty wieder öffnet, dann sollte es dir gut gehen ... sonst wird es in stdout umgeleitet und dann in der Pipe zwischen` sudo` und gepuffert "Tee" bis der Puffer voll ist, um ausgeschrieben zu werden ... also möglicherweise nicht. Attie vor 6 Jahren 0