Wie man den dd-Befehl in Linux verwendet

Dd Guide 00 Featured Image

dd ist einer der wichtigsten Befehle in Linux, der hauptsächlich zum Sichern von Festplatten und Partitionen verwendet wird. Wenn er richtig eingesetzt wird, kann dd ein leistungsstarkes Werkzeug zum Schreiben von Daten von einer Partition auf eine andere und zur Durchführung verschiedener Aufgaben mit Dateien sein. Hier zeigen wir Ihnen, wie Sie den dd-Befehl sinnvoll nutzen können.

Inhaltsverzeichnis

  • Die Geschichte von dd
  • Grundlegende Operanden
  • Erstellen eines Festplattenabbilds
  • Speichern eines Festplattenabbilds auf einer Partition
  • Erstellen eines komprimierten Festplattenabbilds
  • Festlegen einer Blockgröße
  • Löschen einer Festplatte
  • Erstellen eines bootfähigen USB-Laufwerks
  • Klonen spezifischer Partitionen mit dd
  • Dumpen des Inhalts einer CD mit dd
  • Brennen des ISO-Dumps auf CD
  • Häufig gestellte Fragen

Auch lesen: 5 Arch Linux Distros, die einfacher zu installieren und zu verwenden sind

Die Geschichte von dd

Der Befehl wurde ursprünglich in den 1970er Jahren von einem Informatiker namens Ken Thompson in den AT&T Bell Laboratories entwickelt. Er wurde für Unix-basierte Systeme entwickelt und erhielt einen Namen, der als Referenz auf eine Aussage in IBMs Job Control Language, die “DD” genannt wurde, gewählt wurde. Es kann festgestellt werden, dass die Syntax des Befehls einer Aussage in der Job Control Language sehr ähnlich ist.

Der Befehl wurde ursprünglich als Dienstprogramm zum Konvertieren von ASCII in EBCDIC und umgekehrt entworfen. Er wurde 1974 mit der Veröffentlichung der 5. Edition des Betriebssystems in eine Version von Unix integriert.

dd wurde in der Unix-Community als “Festplattenschredder” als Scherz bezeichnet, aufgrund seiner Fähigkeit, Daten auf Festplatten zu zerstören, wenn er unsachgemäß verwendet wird.

Auch lesen: Wie man seine Dateien in der Cloud mit Rclone verschlüsselt

Grundlegende Operanden

Jetzt, da Sie ein wenig über den Hintergrund des Befehls und seine zerstörerischen Fähigkeiten bei unsachgemäßer Verwendung wissen, ist es an der Zeit zu lernen, wie man alles, was er den Benutzern verschiedener Linux-Distributionen bietet, nutzen kann.

Zuerst sehen Sie sich das Handbuch mit dem --help-Flag an:

dd --help

Dd Guide 01 Dd Print Help

Es gibt zwei Operanden für den Befehl, die am häufigsten verwendet werden. Sie sind if und of, die für “Eingabedatei” und “Ausgabedatei” stehen. Der Operand if wird verwendet, um den Speicherort der Quelle darzustellen, während der Operand of den Speicherort darstellt, an dem Sie die Daten vom Eingabestandort speichern möchten.

dd if= of=

Die häufigsten Quell- und Ausgabestandorte sind Festplatten, Partitionen und Festplattenabbilder.

Bevor Sie den Befehl verwenden, kann es hilfreich sein, das Dienstprogramm fdisk zu verwenden, um die Partitionen auf Ihrem System anzuzeigen. Dies kann einfach mit dem -l-Flag des Befehls durchgeführt werden:

sudo fdisk -l

Dd Guide 02 List Fdisk Partitions

Auch lesen: 4 Möglichkeiten, eine gesamte Festplatte unter Linux zu klonen

In diesem Fall wird if verwendet, um das Laufwerk “dev/sda” darzustellen, und of repräsentiert das Laufwerk “dev/sdb”, auf dem die Daten von “dev/sda” gespeichert werden:

dd if=/dev/sda of=/dev/sdb

Dd Guide 03 Duplicate Device

Erstellen eines Festplattenabbilds

Einer der besten Anwendungsfälle für den Befehl ist das Erstellen von Festplattenabbildern im „.img“-Dateiformat. Dies ist äußerst nützlich, um Daten auf Ihrem Linux-basierten System zu sichern und wahrscheinlich der schnellste und einfachste Weg, um eine gesamte Festplatte zu sichern.

Die Logik hier ist in diesem Fall im Wesentlichen die gleiche, wobei der Operand if das Laufwerk “dev/sda” darstellt und der Operand of eine „.img“-Datei darstellt, in der die Daten von der Festplatte gespeichert werden:

dd if=/dev/sda of=/tmp/image.img

Dd Guide 04 Dump Partition To Img

Auch lesen: Der ultimative Leitfaden zu Apt- und Apt-Get-Befehlen

Speichern eines Festplattenabbilds auf einer Partition

Das Erstellen eines Festplattenabbilds mit dem Befehl ist recht einfach, ebenso wie die umgekehrte Version dieses Prozesses.

In diesem Szenario fungiert unsere Festplattenabbilddatei als Eingabedatei, und unsere neue Partition fungiert als Ausgabedatei. Das Dienstprogramm speichert die Daten von unserem Festplattenabbild auf unserer „/dev/sdb“-Partition:

dd if=/tmp/image.img of=/dev/sdb

Dd Guide 05 Write Img To Device

Auch lesen: Wie man den ps-Befehl in Linux verwendet, um Prozesse zu beenden

Erstellen eines komprimierten Festplattenabbilds

Wenn Sie ein Festplattenabbild einer vollwertigen Festplatte erstellen, können Sie sich vorstellen, dass die Dateigröße des endgültigen Festplattenabbilds wahrscheinlich ziemlich groß sein wird. Aus diesem Grund verfügt das dd-Dienstprogramm über eine Funktion, die komprimierte Festplattenabbilder erstellt.

Ein komprimiertes Festplattenabbild kann erstellt werden, indem der Pipe-Befehl | verwendet wird. In diesem Fall wird er verwendet, um den Inhalt der Eingabedatei zu nehmen und den gzip-Befehl mit einem -c-Flag auszuführen, wobei der Inhalt in eine „.gz“-Datei verpackt wird:

dd if=/dev/sda | gzip -c > /tmp/image.gz

Dd Guide 06 Create Compressed Dump

Auch lesen: Wie man cURL für die Datenübertragung über die Befehlszeile und mehr verwendet

Festlegen einer Blockgröße

Sie können auch mit der Geschwindigkeit des dd-Befehls spielen. Dies kann durch die Verwendung des bs-Operands erreicht werden, der die Blockgröße darstellt. Die Blockgröße gibt die Anzahl der Bytes an, die dd in einem einzelnen Vorgang in die Ausgabedatei kopiert. Sie wird in Vielfachen von 1024 Bytes dargestellt, und der Standardwert ist auf 512 Bytes eingestellt. Je höher die Blockgröße ist, desto schneller werden die Daten in die Ausgabedatei gespeichert.

In diesem Fall setzen wir die Blockgröße auf 2048:

dd if=/dev/sda of=/tmp/image.img bs=2048

Die Blockgröße kann auch in Kilobytes angegeben werden:

dd if=/dev/sda of=/tmp/image.img bs=2K

Dd Guide 07 Img Dump Modify Blocksize

Auch lesen: Wie man den lsof-Befehl in Linux verwendet, um offene Dateien aufzulisten

Löschen einer Festplatte

dd kann auch verwendet werden, um Ihre Festplatte zu löschen. Dies geschieht, indem Nullen oder zufällige Zeichen von „/dev/zero“ oder „/dev/urandom“ gelesen und auf die Festplatte/Partition gespeichert werden, wodurch die Daten darauf überschrieben werden. Dies ist äußerst nützlich, wenn Sie sicherstellen möchten, dass Ihre Daten nach dem Verkauf oder der Entsorgung Ihrer Festplatte nicht leicht wiederhergestellt werden können.

Das Überschreiben einer Festplatte mit Nullen:

dd if=/dev/zero of=/dev/sdb

Dd Guide 08 Zeroing Disk

Sie können das Gerät auch mit zufälligen Zeichen überschreiben:

dd if=/dev/urandom of=/dev/sdb

Dd Guide 09 Randomized Disk

Auch lesen: Wie man Bash-Befehle im Hintergrund in Linux ausführt

Erstellen eines bootfähigen USB-Laufwerks

Die Erstellung von bootfähigen USB-Flash-Laufwerken mit „.iso“-Dateien mit dem Befehl ist einfach:

dd if=os.iso of=

Dd Guide 10 Write Image To Device

Klonen spezifischer Partitionen mit dd

Eine weitere brillante Verwendung für dd ist das Klonen aktiver Partitionen auf Ihrem Linux-System. Im Gegensatz zu einer IMG-Datei ermöglicht das Klonen Ihnen, eine exakte Kopie einer bestimmten Partition zu erstellen und sie sofort zu verwenden. Dies kann nützlich sein, wenn Sie eine Multi-Disk-Konfiguration haben und redundante Partitionen für Ihr System erstellen möchten.

Um die Partition von „/dev/sda4“ nach „/dev/sdd1“ zu klonen.

dd if=/dev/sda4 of=/dev/sdb1 conv=noerror,sync

Der conv-Parameter ermöglicht es Ihnen, zusätzliche Optionen einzuschließen, um das Verhalten von dd zu ändern. Dies kann so einfach sein wie das Konvertieren eines Dateinamens in Großbuchstaben oder etwas Komplexes wie das Ändern einer Blockeigenschaft. In diesem Fall verwende ich noerror und sync:

  • Die Option „noerror“ sagt dd, dass es das Kopieren durch eine Geräte-Datei fortsetzen soll, auch wenn sie Gerätefehler meldet. Dies kann hilfreich sein, wenn das Gerät, auf dem sich Ihre Partition befindet, bereits fehlerhaft ist, da „noerror“ sicherstellt, dass dd alle wiederherstellbaren Daten in dieser Partition kopiert.
  • Die Option „sync“ sagt dd, dass es jeden eingehenden Datenblock auf den Kopierpuffer auffüllen soll. Das bedeutet, dass dd sicherstellt, dass jedes Bit von Daten, das es kopieren kann, genau gleich zwischen der Quelle und dem Ziel ist. Dies dient dazu, die Integrität der Partitionsdaten, die Sie klonen, sicherzustellen.

Dd Guide 11 Strict Clone Partition

Auch lesen: Wie man den lp-Befehl in Linux verwendet, um Dateien aus dem Terminal zu drucken

Dumpen des Inhalts einer CD mit dd

Es ist auch möglich, dd als Dump-Werkzeug für Disk-Inhalte zu verwenden. Ähnlich wie bei einer IMG-Datei können Sie dies tun, indem Sie ein Laufwerk als Eingabe und die .ISO-Erweiterung als Ausgabe verwenden. Betrachten Sie das folgende Beispiel:

dd if=/dev/cdrom of=/tmp/dump.iso conv=noerror,sync

Dieser Befehl sagt dd, dass es das CD-ROM-Gerät laden und dessen Inhalt in eine ISO-Datei kopieren soll.

Dd Guide 12 Dump Cd Disc

Sobald dies abgeschlossen ist, können Sie den file-Befehl verwenden, um zu überprüfen, ob die dumpte Datei ein ISO 9660-Abbild ist:

file /tmp/dump.iso

Brennen des ISO-Dumps auf CD

Als nächstes können Sie dd verwenden, um Duplikate der ISO-Datei zu erstellen, die Sie gerade erstellt haben. Dazu müssen Sie eine leere Disc in Ihr Laufwerk einlegen und „/dev/cdrom“ als Ausgabedatei von dd verwenden. Damit können Sie dann den folgenden Befehl ausführen, um die ISO-Datei ordnungsgemäß auf die Disc zu brennen:

dd if=/tmp/image.iso of=/dev/cdrom obs=32k seek=0

Dieser Befehl versucht nicht, Fehler zu umgehen oder Integritätsprüfungen durchzuführen. Stattdessen setzt er zwei Optionen, die spezifisch für das Schreiben auf CD-ROMs sind:

  • Die Option „obs“ legt die Größe der Blöcke fest, die dd auf die Disc schreiben wird. In diesem Fall verwendet der Befehl 32 Kilobyte als Basis für optische Medienübertragungen.
  • Andererseits sagt die Option „seek“ dd, dass es den Beginn der Übertragung auf einen bestimmten Datenblock setzen soll. Um ordnungsgemäß auf eine CD-ROM zu übertragen, ist es wichtig, dies auf 0 zu setzen, damit dd sofort auf den ersten Sektor der Disc schreibt.

Dd Guide 13 Burn Cd Disk

Auch lesen: 8 nützliche und interessante Bash-Eingabeaufforderungen

Häufig gestellte Fragen

Ist es möglich, den Fortschritt eines dd-Vorgangs zu sehen?

Ja! Es ist unglaublich einfach, den Fortschritt eines dd-Vorgangs zu betrachten. Dazu müssen Sie nur den status-Parameter am Ende Ihres dd-Befehls hinzufügen:

dd if=/dev/sda4 of=/dev/sdd1 conv=noerror,sync status=progress

Die Option „progress“ sagt dd, dass es die Blöcke, die es gerade kopiert, auf die Standardausgabe drucken soll, was es Ihnen effektiv ermöglicht, den Fortschritt des Befehls zu verfolgen. Neben der Option „progress“ akzeptiert der Statusparameter auch zwei zusätzliche Werte:

  • Noxfer: Der Wert „noxfer“ ist ähnlich wie „progress“, aber er druckt nicht die Gesamtdatenübertragungsinformationen am Ende des Befehls. Dies kann nützlich sein, wenn Sie dd-Befehle als Teil einer großen UNIX-Pipeline verwenden.
  • None: Der Wert „none“ sagt dd, dass es keine Informationen außer Fehlern drucken soll, während es läuft. Dies ist hilfreich, wenn Sie geplante dd-Aufgaben wie das Erstellen von Backup-IMG-Dateien für derzeit aktive Partitionen ausführen.

Ist es in Ordnung, immer eine hohe Blockgröße einzustellen, um Übertragungen zu beschleunigen?

Nein. Während das Einstellen einer hohen Blockgröße die Übertragungsrate von dd sicherlich beschleunigt, stellt dies nicht sicher, dass das Gerät, auf das Sie schreiben, ordnungsgemäß initialisiert wird. Zum Beispiel kann das Einstellen einer hohen Blockgröße für optische Medien wie eine CD-ROM oder eine DVD-ROM zu unlesbaren Discs führen, wenn sie auf einem Disc-Player abgespielt werden.

Eine gute Faustregel ist, hohe Blockgrößen nur beim Dumpen von Medien wie Discs und Flash-Laufwerken zu verwenden. Darüber hinaus ist es auch eine gute Praxis, die maximale Blockgröße auf 2048 Kilobyte festzulegen. Dadurch wird sichergestellt, dass Sie den Inhalt einer Disc weiterhin auf eine CD oder DVD zurücklegen können.

Ich habe versucht, ein bootfähiges USB-Laufwerk zu erstellen, aber es bootete nicht. Funktioniert dd nicht?

Nein! Der wahrscheinlichste Grund, warum es nicht bootete, ist, dass die Datei, die dd auf das USB-Laufwerk kopiert hat, keine bootfähige Datei ist. Zum Beispiel wird das Schreiben eines CD-Installationsprogramms auf ein USB-Laufwerk nicht die richtigen Flags setzen, um es bootfähig zu machen.

Eine Möglichkeit, sicherzustellen, dass es bootfähig ist, besteht darin, seine Eigenschaften über das Programm file zu überprüfen. Zum Beispiel:

file /Downloads/ubuntu-21.10.iso

Von dort aus müssen Sie sich die Eigenschaften ansehen, die auf der Standardausgabe gedruckt werden. Eine bootfähige Datei sollte entweder ein Disk-Image oder eine ISO-Hybrid-Datei sein.

Bildnachweis: Unsplash