dd
100%

Geräte · Lektion 7

dd

Lerne, wie `dd` Blockdatenströme kopiert und wie du zerstörerische Fehler bei Eingabe, Ausgabe und Größe vermeidest.

dd kopiert Daten von einem Eingabe- in einen Ausgabestrom und wendet dabei die angeforderten Blockgrößen und Umwandlungen an. Das Werkzeug versteht weder Dateisysteme und Partitionsgrenzen noch, ob ein Ausgabeziel wertvolle Daten enthält. Dadurch eignet es sich für Abbilder und rohe Geräte – und wirkt bei einem falschen Ziel sofort zerstörerisch.

Eingabe, Ausgabe und Blockgröße

Ein Befehl besitzt diese allgemeine Form:

$ dd if=input.img of=output.img bs=4M status=progress
  • if= wählt die Eingabe; ohne diese Angabe liest dd von der Standardeingabe.
  • of= wählt die Ausgabe; ohne diese Angabe schreibt dd auf die Standardausgabe.
  • bs= legt beim gewöhnlichen Kopieren die Blockgröße für Ein- und Ausgabe fest.
  • status=progress fordert GNU dd auf, regelmäßig den Übertragungsfortschritt zu melden.

dd kopiert Blöcke und nicht grundsätzlich einzelne Bytes. Ein größeres bs kann den Aufwand für Systemaufrufe verringern, doch der optimale Wert hängt von Geräten, Ausrichtung, Caches und Arbeitslast ab. Die logisch kopierten Daten verändern sich dadurch nicht.

Welcher Operand wählt das von dd beschriebene Ziel aus?

Die Kopie begrenzen

count= begrenzt die Anzahl der verarbeiteten Eingabeblöcke. Für eine gewöhnliche Eingabedatei:

$ dd if=source.img of=prefix.img bs=1M count=2 status=progress

Damit werden zwei Eingabeblöcke mit jeweils bis zu 1 MiB angefordert, also höchstens 2 MiB kopiert. Bei Datenströmen wie Pipes können kurze Lesevorgänge diese einfache Multiplikation erschweren; GNU dd bietet iflag=fullblock, wenn vollständige Eingabeblöcke erforderlich sind. Beachte Binäreinheiten und Suffixsyntax der lokal installierten Implementierung.

Welche maximale Datenmenge fordert bs=1M count=2 bei einer gewöhnlichen Datei an?

Ein Abbild auf ein Blockgerät schreiben

Eine rohe Wiederherstellung kann so aussehen:

$ sudo dd if=backup.img of=/dev/sdX bs=4M status=progress conv=fsync

/dev/sdX ist absichtlich ein Platzhalter und kein direkt zu kopierender Befehl. Bevor du ihn ersetzt:

  1. Halte eine geprüfte Sicherung aller wertvollen Daten vor.
  2. Bestimme das Ziel mit lsblk, udevadm oder gleichwertigen Werkzeugen anhand von Modell, Seriennummer, Größe, Transport und dauerhaftem Link.
  3. Bestätige, dass keine Zielpartition eingehängt, als Swap verwendet, Teil von RAID oder LVM oder von einem anderen Dienst geöffnet ist.
  4. Prüfe das Gerät nach jedem Trennen, Neustart oder jeder Änderung der Topologie erneut.
  5. Vergewissere dich, dass das Abbild passt und wirklich das vollständige Gerät beschrieben werden soll.

Das Ausgabegerät wird von seinem Anfang an überschrieben. Das Vertauschen von if und of, die Auswahl des Systemdatenträgers oder die Verwendung eines ganzen Datenträgers anstelle einer beabsichtigten Partition kann Daten ohne Bestätigungsfrage zerstören.

Was ist der wichtigste Grund, Modell, Seriennummer, Größe und aktive Nutzung vor dem Schreiben auf ein rohes Gerät zu prüfen?

Ein konsistentes Abbild erstellen

Das Lesen eines aktiven Blockgeräts, während sich sein Dateisystem verändert, kann ein intern inkonsistentes Abbild erzeugen. Bevorzuge ein nicht eingehängtes Dateisystem, einen anwendungskonsistenten Snapshot oder einen dokumentierten Freeze-/Snapshot-Ablauf. Datenbanken und virtuelle Maschinen können eigene Verfahren zum Ruhigstellen erfordern.

Ein rohes Geräteabbild kopiert Blöcke einschließlich Dateisystemmetadaten und unbenutzter Bereiche. Es kann daher wesentlich größer als eine dateibasierte Sicherung sein und Kennungen duplizieren, die geändert werden müssen, bevor ein Klon neben dem Original eingehängt wird.

Warum kann das Abbild eines eingehängten, sich verändernden Dateisystems unzuverlässig sein?

Abschluss und Überprüfung

Ein Befehlsabschluss ohne Ein-/Ausgabefehler beweist weder die Auswahl der beabsichtigten Quelle und des richtigen Ziels noch die Verwendbarkeit des Abbilds. Notiere die genauen Identitäten und Größen, stelle sicher, dass gepufferte Ausgabe den Speicher erreicht hat, vergleiche einen angemessen begrenzten Rücklesevorgang oder kryptografische Hashes und teste die Wiederherstellung gemäß dem Sicherungsplan.

Bewirb Überschreibdurchläufe mit dd nicht als garantiert sichere Löschung für SSDs, Flash-Übersetzungsschichten, Thin-Provisioning-Speicher, Snapshots oder umgeleitete Sektoren. Verwende vom Gerät und der Plattform unterstützte Bereinigungsverfahren zusammen mit einer ausdrücklichen Richtlinie zur Datenvernichtung.

Was beweist ein Exit-Status null von dd für sich allein nicht?

Übe ausschließlich mit gewöhnlichen Dateien oder entbehrlichen virtuellen Datenträgern, bevor du rohe Hardware berührst. Die Partitions- und Dateisystemkonzepte im Lab Linux-Partitionen und Dateisysteme verwalten liefern wichtigen Kontext.

Lektion abgeschlossen

Sie haben dd abgeschlossen

Du kannst dd nun als rohes Blockkopierwerkzeug ohne Verständnis deiner Absicht einordnen.

  • Unterscheide if, of, bs und count.

  • Prüfe die dauerhafte Zielidentität und jeden aktiven Verbraucher.

  • Erstelle Abbilder aus einem konsistenten Speicherzustand.

  • Leere Puffer, prüfe das Ergebnis und teste nach dem Kopieren die Wiederherstellung.

  • Behandle jede Ausgabe auf ein rohes Gerät als potenziell zerstörerisch.

Lernfortschritt speichern

Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.

Kostenloses Konto erstellen
Zurück zu Geräte