Die Software dd ist ein Unix-Tool zum Kopieren von Daten, es wurde bereits in den 1970er Jahren entwickelt. Der Name ist eine Anspielung auf die dd Anweisung der Job Control Language und steht für „data definition“. Mithilfe von dd wird eine exakte Kopie eines Datenträgers, einer Partition oder auch nur einer Datei erstellt. Die Kopie ist somit ein bitgenaues Abbild des Originals. Bei dem Programm handelt es sich um eine einfache Konsolenanwendung, die im Wesentlichen nur die zwei Parameter Quelle (if=) und Ziel (of=) benötigt. Bei der Quelle und dem Ziel kann es sich um eine Datei, eine Festplatte, eine Partition oder ein anderes blockorientiertes Gerät (z.B. CD-Laufwerk) handeln.
In dem nachfolgenden Beispiel wird die Festplatte unter /dev/sdb in das Image example.img kopiert:
$ dd if=/dev/sdb of=example.img
Zusatztool pv
Das kleine Tool pv zeigt den Datenfluss bei Pipes an und kann universell eingesetzt werden, es ist also nicht nur auf dd beschränkt. pv wird mit Pipes – senkrechter Strich – zwischen der Eingabe und Ausgabe eingebunden.
$ dd if=/dev/sdb | pv | dd of=example.img
Als Ausgabe werden die bereits übertragene Datenmenge und der aktuelle Durchsatz angezeigt. Rechts erscheint eine Animation, die sich kontinuierlich bewegt, da pv die Gesamtmenge an Daten nicht kennt.
26,72MB 0:00:09 [ 798kB/s] [ <=> ]
Ist die zu übertragende Dateigröße bekannt, kann dies mit dem Parameter s mit übergeben werden.
$ dd if=/dev/sdb | pv -s 16G | dd of=example.img
Danach wir der Fortschritt mit einem Ladebalken, einer Prozentzahl und der Restzeit angezeigt.
950MB 0:00:35 [8,66MB/s] [=> ] 6% ETA 0:09:14
Status Option
Alternativ kann in neuere Linux-Versionen (z.B. seit Ubuntu 16.04) die option status=progress verwendet werden. Sie wird einfach nach einem Befehl geschrieben.
$ dd if=/dev/sdb of=example.img status=progress
Damit werden alle relevanten Informationen für eine Fortschrittsanzeige mit dd angezeigt.
362858752 bytes (500 MB, 347 MiB) copied, 45 s, 28,6 MB/s
Alternative dcfldd
dcfldd ist eine erweiterte Version von dd, sie wurde vom U.S. Department of Defense Computer Forensics Lab um mehrere forensische Funktionen erweitert. Diese Variante von dd besitzt bereits eine integrierte Funktion, um den Fortschritt während des Kopiervorgangs anzuzeigen. Der Aufruf erfolgt dabei linear zu dd.
$ dcfldd if=/dev/sdb of=example.img
Voll gut, dass dd das inzwischen auch kann. Man sieht schön wie viele Daten schon kopiert wurden und mit welcher Datenrate das aktuell passiert!
dcfldd ist nämlich nicht in den Softwareverzeichnissen von Ubuntu enthalten und somit braucht man grml um das nutzen zu können.
Danke für den Artikel hier, das hat mir geholfen!
Grüße aus Bremen
Michael Ballweg