
Ich verwende es, dd
um Daten von einer alten Festplatte auf eine neue zu kopieren. Ich möchte sicher sein, dass die Integrität der Daten geschützt ist.
Auf dieserAntwort, sagt Gilles
Wenn [dd] erfolgreich beendet wurde, ist die Sicherung korrekt, sofern kein Hardwarefehler vorliegt…
Was bedeutet das genau? Gibt dd
es eine Art integrierte Überprüfung?
Wenn ich stattdessen rsync verwenden würde, würde ich --checksum
zur Überprüfung auch einen zweiten Durchgang ausführen. Ist diese Art von Paranoia gerechtfertigt?
Antwort1
dd
oder jede andere Anwendung verfügt nicht über „eine Art integrierte Überprüfung“ in dem Sinne, den Sie wahrscheinlich meinen: Sie liest die Daten nicht vom Speichermedium zurück, um sie mit dem Geschriebenen zu vergleichen. Das ist die Aufgabe des Betriebssystems.
Es ist nicht wirklich möglich, von einer Anwendung aus eine Lese-/Überprüfung bis zur Hardware durchzuführen. In einigen Szenarien würde es funktionieren, aber in den meisten Fällen würde es nichts bewirken. Die Anwendung könnte zurücklesen, was sie gerade geschrieben hatwenn direkt auf ein Speichermedium geschrieben wird, aber das würde normalerweise aus einem In-Memory-Cache zurücklesen, was keine nützliche Sicherheit bieten würde. Indas Beispiel, das Sie anführen, dd
schreibt in eine Pipe und hat in diesem Fall keine Kontrolle darüber, was weiter unten mit den Daten passiert. In Ihrem rsync-Beispiel rsync --checksum
ist ein zweiter Durchlauf sinnlos: Theoretisch könnte er einen Fehler abfangen, aber in der Praxis würde der zweite Durchlauf, wenn tatsächlich ein Fehler auftritt, wahrscheinlich nichts Falsches melden, sodass Sie Aufwand für etwas verschwenden, das Ihnen keine wirklich nützliche Sicherheit bietet.
AnwendungenTunÜberprüfen, was mit den Daten geschieht, in dem Sinne, dass sie überprüfen, ob das Betriebssystem die Verantwortung für die Daten übernommen hat. Alle Systemaufrufe geben einen Fehlerstatus zurück. Wenn ein Systemaufruf einen Fehlerstatus zurückgibt, sollte die Anwendung diesen Fehler an den Benutzer weitergeben, im Allgemeinen durch Anzeigen einer Fehlermeldung und Zurückgeben eines Exit-Status ungleich Null.
Beachten Sie, dass es dd
sich um eine Ausnahme handelt: Abhängig von den Befehlszeilenparameterndd
könnte einige Fehler ignorieren. Dies ist äußerst ungewöhnlich: dd
ist der einzige allgemeine Befehl mit dieser Eigenschaft. Verwenden Sie cat
anstelle von dd
, so riskieren Sie keine Beschädigung undes kann durchaus schneller gehen.
Beim Kopieren von Daten können zwei Arten von Fehlern auftreten.
- Beschädigung: Während der Übertragung wird ein Bit umgedreht. Dies lässt sich auf Anwendungsebene nicht überprüfen, da dies in diesem Fall auf einen Programmier- oder Hardwarefehler zurückzuführen ist, der höchstwahrscheinlich beim Rücklesen dieselbe Beschädigung verursacht. Die einzige nützliche Möglichkeit, um zu überprüfen, dass keine solche Beschädigung aufgetreten ist, besteht darin, das Medium physisch zu trennen und es erneut zu versuchen, vorzugsweise auf einem anderen Computer, falls das Problem beim RAM lag.
- Abschneiden: Alle kopierten Daten wurden korrekt kopiert, einige Daten wurden jedoch überhaupt nicht kopiert. DiesIstEs lohnt sich, dies manchmal zu überprüfen, je nach Komplexität des Befehls. Sie müssen die Daten dazu nicht lesen: Überprüfen Sie einfach die Größe.
Antwort2
Nein, dd
führt keine explizite Überprüfung durch. Wenn Sie eine forensisch überprüfte Kopie Ihrer Festplatte oder eines Teils davon wünschen/benötigen, verwenden Sie , dcfldd
eine erweiterte Version von , die dd
vom Computer Forensics Lab des US-Verteidigungsministeriums entwickelt wurde.
Antwort3
Die einzige Möglichkeit, „sicher“ zu sein, besteht darin, einen zusätzlichen Lese- und Vergleichsdurchgang durchzuführen (nach dem Löschen der Caches).
Abgesehen davon dd
erkennt es Lese- und Schreibfehler auf die gleiche Weise wie alle anderen Programme ... es funktioniert, wenn die Laufwerke (und andere beteiligte Komponenten) Fehler melden; bei Laufwerken, die Daten stillschweigend akzeptieren, ohne sie tatsächlich zu schreiben, haben Sie Pech gehabt.
Ist diese Art von Paranoia gerechtfertigt?
Wenn Sie nicht auf die Zuverlässigkeit Ihrer Hardware vertrauen können, wird es kompliziert ...
Antwort4
Aus man dd
:
Wenn der Vorgang abgeschlossen ist, zeigt dd die Anzahl der vollständigen und teilweisen Eingabe- und Ausgabeblöcke, der abgeschnittenen Eingabedatensätze und der Byte-Swap-Blöcke mit ungerader Länge in der Standardfehlerausgabe an.
Ein teilweiser Eingabeblock ist ein Block, in dem weniger als die Eingabeblockgröße gelesen wurde. Ein teilweiser Ausgabeblock ist ein Block, in dem weniger als die Ausgabeblockgröße geschrieben wurde. Teilweise Ausgabeblöcke auf Bandgeräten gelten als schwerwiegende Fehler. Andernfalls wird der Rest des Blocks geschrieben. Teilweise Ausgabeblöcke auf Zeichengeräten erzeugen eine Warnmeldung.
dd
überprüft jedes Mal, wenn ein Block kopiert wird, ob die Eingabe-/Ausgabeblockgrößen übereinstimmen. Wenn dies nicht der Fall ist, wird der Fehler mit einer Warnung oder einem schwerwiegenden Fehler (überschrieben mit noerror
) behandelt. Deshalb dd
funktioniert es praktisch immer.
Es ersetzt jedoch nicht die manuelle Überprüfung der Integrität Ihrer Festplatte. Wenn die Informationen für Sie wertvoll sind, dann ja,Ihre Paranoia ist berechtigtdd
. Führen Sie nach Abschluss eine manuelle Überprüfung durch .