====== dd ====== Bei ''dd'' handelt es sich um ein Programm für die Kommandozeile, das in jedem Linux/Unix vorhanden ist und zum Kopieren und Konvertieren von Daten verwendet werden kann. Gemäß dem Unix-Grundsatz "[[https://de.wikipedia.org/wiki/Everything_is_a_file|everything is a file]]" können sowohl blockorientierte Geräte wie Festplatten oder Partitionen sowie zeichenbasierte Daten wie Images oder simple Dateien kopiert werden. Dabei ist jedoch insofern Vorsicht geboten, da sich bei falscher Anwendung ganze Datenträger unwiderruflich löschen lassen. ===== Anwendungsbeispiele ===== ''dd'' kann sowohl zum Sichern von Partitionen verwendet werden dd if=/dev/sda1 of=/tmp/sda1.img als auch zum Löschen eines Datenträgers, indem er mit zufälligen Zeichen überschrieben wird: dd if=/dev/urandom of=/dev/sdb Ebenfalls möglich ist z. B. das Vorbereiten eines USB-Sticks als Bootmedium mit einer Live-CD einer Linux-Distribution: dd if=/tmp/linux.iso of=/dev/sdb ===== Backup mit dd zippen ===== Wenn ''dd'' als Backup-Tool verwendet wird, kann es von Interesse sein, das erstellte Image zu komprimieren. Dazu können die gelesenen Blöcke in gzip gepiped werden: dd if=/dev/sda bs=1M | gzip > /media/backup.img.gz Das ganze lässt sich mittels gunzip -c /media/backup.img.gz | dd of=/dev/sda bs=1M wieder zurück auf die Festplatte spielen. ===== Forschrittsanzeige mit dd und Bordmitteln ===== Da ''dd'' von sich aus erst nach Abschluss des Prozesses Informationen ausgibt, kann schnell der Wunsch nach einer Ausgabe des Fortschritts aufkommen, insbesondere beim Kopieren großer Datenmengen. Erhält ''dd'' ein SIGINT Signal, gibt es über die Standard-Fehlerausgabe (stderr) eine Statusmeldung aus. Dazu kann mittels des ''kill''-Befehls das Signal SIGUSR1 (user defined signal 1) an ''dd'' übermittelt werden: sudo kill -USR1 $(pgrep ^dd) Alternativ ist es auch möglich mit ''watch'' regelmäßige Ausgaben zu erhalten, z. B. alle 5 Sekunden: watch -n 5 'sudo kill -USR1 $(pgrep ^dd)' ===== Fortschritt mit pipe viewer ===== Eine weitere Möglichkeit ist die Verwendung von ''[[linux:pv]]'' (pipe viewer). Mit diesem Programm ist es möglich, die aktuell verstrichene Zeit sowie Geschwindigkeit angezeigt zu bekommen. Da ''pv'' nicht erkennt, wie groß die zu kopierenden Daten sind, kann mit der Option ''%%--size%%'' oder kurz ''-s'' zusätzlich angegeben werden, welche Größe die Daten haben, um eine Prozentanzeige sowie ETA zu erhalten: dd if=/dev/urandom bs=1M | pv -s 1g | dd of=/tmp/test.img Ebenfalls nutzbar ist es zur Ausgabe auf stdout: pv /path/to/big_file | md5sum Hierbei erkennt ''pv'' die Größe automatisch. {{tag>linux dd}}