Der Befehl dd

dd-featured

In diesem Beitrag lernen Sie den Befehl dd kennen, welcher unter Linux- / UNIX-Betriebssystemen zum Bit-genauen Kopieren von Festplatten, Partitionen oder Dateien verwendet wird. Der Datenträger wird also bit- bzw. byteweise ausgelesen und beschrieben, wobei Inhalte und Belegung nicht berücksichtigt werden. Als Bestandteil des essenziellen Pakets coreutils ist dd auf den meisten Systemen bereits vorinstalliert.

Bei der Verwendung von dd sollte besondere Vorsicht walten, auch da der Befehl ohne jegliche Rückfragen ausgeführt wird. Unachtsame Aufrufe des Befehls könnten zum ungewünschten Überschreiben vorhandener Daten führen.

Allgemeine Syntax

Die allgemeine Syntax des Befehls dd lautet:

dd [Optionen]

Standardmäßig liest dd von dem Standard-Input stdin und schreibt in den Standard-Output stdout. Er kann so auch zusammen mit Umleitungen durch Pipe-Operatoren genutzt werden.

Beispiel: Bootfähigen USB-Stick erstellen

Dieses Beispiel zeigt die Erstellung eines bootfähigen USB-Sticks als einen der vielen Anwendungsfälle des Befehls dd. Es wird davon ausgegangen, dass sich das Image, welches auf den USB-Stick geschrieben werden soll im aktuellen Arbeitsverzeichnis befindet - in diesem Fall wird ein Debian 10.5.0 ISO verwendet. Der USB-Stick ist dem System hier unter dem Gerätenamen /dev/sdd bekannt.
Aushängen:

Vor dem Beginn des Schreibvorgangs auf den USB-Stick muss sichergestellt werden, dass seine Dateisysteme nicht im System eingehängt sind. In diesem Fall ist /dev/sdd1 eingehängt. Der folgende Befehl hängt das Dateisystem aus.

umount /dev/sdd1

ISO-Image schreiben:

Das ISO-Image wird nun mithilfe von dd auf den USB-Stick geschrieben. Hier wird zusätzlich auch die nicht in diesem Beitrag behandelte Option conv verwendet, um die Daten der Ausgabe vor Beendigung physisch zu schreiben. Die Blockgröße wird mit bs festgelegt, um die Kopierdauer zu verringern und die Lebensdauer des Speichers zu schonen.

dd if=debian-10.5.0-amd64-DVD-1.iso of=/dev/sdd bs=4M status=progress conv=fdatasync

Nach Ausführung:

Nach Abschluss des Kopiervorgangs wird eine finale Übertragungsstatistik ausgegeben. Der bootfähige USB-Stick ist dann fertig.

Wichtige Optionen

dd stellt eine ganze Reihe von Optionen, die unter anderem auch die Umwandlung und Formatierung von Daten beeinflussen können. Die wichtigsten dieser Optionen werden im Folgenden vorgestellt. Die Optionen von dd unterscheiden sich von den klassischen Optionen der meisten anderen Befehle insofern, als sie ohne ein vorangestelltes Minuszeichen "-" angegeben werden und zudem ihre Parameter hinter einem Gleichheitszeichen "=" erhalten.

bs - Blockgröße (lesend / schreibend)

Die Blockgröße gibt an, wie viele Byte auf einmal gelesen oder geschrieben werden. Mit der Option bs ist es möglich, die Blockgröße für das Lesen und Schreiben auf einen Wert zu setzen:

dd bs=[Blockgröße]

Für die Angabe der Blockgröße sind verschiedene multiplikative Suffixe zulässig:

Suffix

Funktion

c

1-fach

w

2-fach

b

512-fach

kB

1000-fach

K

1024-fach

MB

1000*1000-fach

M

1024*1024-fach

GB

1000*1000*1000-fach

G

1024*1024*1024-fach

TB

1000*1000*1000*1000-fach

T

1024*1024*1024*1024-fach

count - N Eingabeblöcke kopieren

Mithilfe der Option count ist es möglich, die Anzahl der aus der Eingabe zu kopierenden Blöcken zu begrenzen.

dd count=[Anzahl]

Auch hier können die bereits aufgelisteten multiplikativen Suffixe verwendet werden.

ibs - Blockgröße (lesend)

Die Option ibs ermöglicht, ähnlich wie auch bs, die Festlegung der Blockgröße. Anders als bs setzt sie diese jedoch nicht für das Lesen und das Schreiben, sondern nur für das Lesen.

dd ibs=[Blockgröße]

Die multiplikativen Suffixe sind, genau wie bei der Option bs, verwendbar.

if - Eingabedatei verwenden

Wenn dd nicht aus dem Standard-Input stdin, sondern aus einer Eingabedatei lesen soll, dann geben Sie diese mit der Option if an.

dd if=[Eingabedatei]

obs - Blockgröße (schreibend)

Mit der Option obs kann die Blockgröße für das Schreiben gesetzt werden.

dd obs=[Blockgröße]

Es können wieder die im Rahmen der Option bs vorgestellten multiplikativen Suffixe verwendet werden.

of - Ausgabedatei verwenden

Die Option of erlaubt die Angabe einer Datei, welche anstelle des Standard-Output stdout für die Ausgabe verwendet werden soll.

dd of=[Ausgabedatei]

seek - Blöcke in Eingabe überspringen

Durch Verwendung der Option seek ist es möglich, eine festgelegte Anzahl Blöcke am Anfang der Eingabe zu überspringen. Als Blockgröße wird die mit den Optionen bs oder obs festgelegte Größe verwendet.

dd seek=[Anzahl]

Die Verwendung der multiplikativen Suffixe ist erlaubt.

skip - Blöcke in Ausgabe überspringen

skip erlaubt das Überspringen einer bestimmten Anzahl Blöcke in der Ausgabe, wobei die mit bs oder ibs festgelegte Blockgröße verwendet wird.

dd skip=[Anzahl]

Genau wie bei seek können auch hier multiplikative Suffixe verwendet werden.

status - Log-Level für Standard-Error

Mithilfe der Option status kann das Level der Informationen, die dd in den Standard-Error stderr leitet, festgelegt werden.

dd status=[Level]

Die folgenden Werte sind für den Level gültig:

Operator

Funktion

none

Alles bis auf Fehlermeldungen unterdrücken.

noxfer

Finale Übertragungsstatistiken unterdrücken.

progress

Periodische Übertragungsstatistiken anzeigen.

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: