Wie der DD -Befehl unter Linux mit Beispielen funktioniert

Wie der DD -Befehl unter Linux mit Beispielen funktioniert

DD ist ein sehr leistungsstarkes und nützliches Dienstprogramm für UNIX- und UNIX-ähnliche Betriebssysteme. Wie in seinem Handbuch angegeben, ist es der Zweck, Dateien zu konvertieren und zu kopieren. Bei Unix- und Unix-ähnlichen Betriebssystemen wie Linux wird fast alles als Datei behandelt, sogar Blockgeräte: Dies macht DD unter den anderen Dingen nützlich, um Scheiben zu klonen oder Daten zu löschen. Der dd Das Dienstprogramm ist auch bei der minimalsten Installation aller Verteilungen außerhalb der Box erhältlich. In diesem Tutorial werden wir sehen, wie wir es verwenden und wie wir sein Verhalten ändern können, indem wir einige der am häufigsten verwendeten Optionen verwenden, um Ihre Linux -Systemverwaltung zu erleichtern.

In diesem Tutorial lernen Sie:

  • So verwenden Sie DD
  • So ändern Sie das Programmverhalten mit einigen der am häufigsten verwendeten Optionen


Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilungsunabhängige
Software Es ist keine spezielle Software erforderlich, um diesem Tutorial außer DD zu folgen
Andere Vertrautheit mit der Befehlszeilenschnittstelle und Umleitungen
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Grundnutzung

Die grundlegende Syntax von dd ist sehr einfach. Standardmäßig liest das Programm aus Standardeingabe und schreibt an Standardausgabe. Wir können jedoch Alternative angeben Eingang Und Ausgang Dateien mithilfe der Verwendung der Wenn Und von Befehlszeilenoptionen. Hier unterscheidet sich DD von der überwiegenden Mehrheit der Shell -Befehle, da der Standard nicht verwendet wird --Möglichkeit oder Syntax für Optionen.



Lassen Sie uns ein Beispiel für die DD -Verwendung sehen. Einer der typischsten Anwendungsfälle für das Dienstprogramm ist die Sicherung des Master -Boot -Datensatzes: der erste Sektor in einem Erbe Mbr verteiltes System. Die Länge dieses Sektors ist normalerweise 512 Bytes: Es enthält die Stufe 1 der Grub -Bootloader und die Festplattenpartitionstabelle. Angenommen, wir wollen die sichern Mbr Von /Dev /SDA -Festplatte müssen wir nur DD mit der folgenden Syntax aufrufen:

$ sudo dd if =/dev/sda bs = 512 count = 1 von = mbr.img

Lassen Sie uns den obigen Befehl analysieren. Zunächst haben wir den tatsächlichen DD -Aufruf mit dem SUDO -Befehl vorangestellt, um den Befehl mit administrativen Berechtigungen auszuführen. Dies ist erforderlich, um auf die zuzugreifen /dev/sda Blockgerät. Wir haben dann DD aufgerufen, um die Eingangsquelle mit der anzugeben Wenn Option und die Ausgabedatei mit von. Wir haben auch die benutzt BS Und zählen Optionen zur Angabe der Datenmenge, die jeweils zu einem Zeitpunkt oder der Blockgröße gelesen werden sollten, und die Gesamtmenge der zu lesen. In diesem Fall hätten wir das weglassen können BS Option, seit 512 Bytes ist die Standardgröße, die von DD verwendet wird. Wenn wir den obigen Befehl ausführen, werden wir feststellen, dass er die folgende Ausgabe erzeugt:

1+0 Datensätze in 1+0 Aufzeichnungen 512 Bytes kopiert, 0.000657177 s, 779 kb/s

Die obige Ausgabe zeigt uns die Menge der gelesenen und geschriebenen Datensätze, die kopierte Datenmenge, die Zeitspanne, in der die Aufgabe abgeschlossen wurde, und die Übertragungsgeschwindigkeit. Wir sollten jetzt einen Klon der Mbr Sektor, gespeichert in der mbr.img Datei. Offensichtlich hat das Datei -Suffix unter Linux keine wirkliche Bedeutung, daher die Verwendung des “.IMG “ist völlig willkürlich: Sie möchten vielleicht verwenden“.DD “, um den Dateinamen den Befehl widerzuspiegeln zu lassen, mit dem die Datei erstellt wurde.

Im obigen Beispiel verwenden wir die BS Option, beide Bytes zu definieren, die gleichzeitig gelesen und schreiben sollten. Um separatwerte Werte für die beiden Operationen zu definieren, können wir die verwenden RDS Und obs Optionen stattdessen, die jeweils die Anzahl der gelesenen und geschriebenen Bytes nach dem anderen festlegen.

Blöcke überspringen beim Lesen und Schreiben

Es gibt Fälle, in denen wir eine bestimmte Menge an Blockgrößen überspringen möchten, wenn Sie aus dem Lesen oder Schreiben in eine Datei schreiben. In solchen Fällen müssen wir die verwenden überspringen Und suchen Optionen: Sie werden verwendet, um die angegebenen Datenblöcke zu Beginn der Eingabe und zu Beginn der Ausgabe zu überspringen.

Ein Beispiel für eine solche Situation ist, wenn wir die versteckten Daten zwischen dem sichern/wiederherstellen möchten Mbr und die erste Partition auf der Festplatte, die normalerweise in Sektor beginnt 2048, aus Ausrichtungsgründen. Der 2047 Sektoren dieses Gebiets enthalten normalerweise ein Vermächtnis Mbr Partitionssetup, die Stufe 1.5 des Grub -Bootloaders. Wie können wir DD anweisen, nur in diesem Bereich zu klonen, ohne die einzubeziehen? Mbr? Alles was wir tun müssen, ist, die zu verwenden überspringen Möglichkeit:

$ sudo dd if =/dev/sda von = versteckt-data-after-mbr count = 2047 überspringen = 1

In diesem Fall haben wir DD angewiesen, zu kopieren 2047 Blöcke von 512 Bytes aus der Scheibe /Dev /SDA ab dem zweiten. Wenn wir die geklonten Daten wiederherstellen und in derselben Festplattenzone zurückschreiben möchten, möchten wir die Suchoption verwenden, die die angegebene Anzahl von Blöcken zu Beginn der Ausgabe überspringt:

$ sudo dd if = versteckt-data-after-mbr von =/dev/sda such = 1

In diesem Fall haben wir DD angewiesen, Daten aus dem zu kopieren Hidden-Data-After-MBR und es auf die zu schreiben /dev/sda Blockvorrichtung ab dem zweiten Block.



Komprimieren der von DD gelesenen Daten

Wie wir bereits gesagt haben, ist eine der häufigsten Operationen mit DD -Klonen. Der DD -Befehl erzeugt einen perfekten Klon einer Festplatte, da es Blockgeräte Byte durch Byte kopiert und also eine 160 -GB. Wenn wir eine Festplatte in eine Datei klonen, können wir die von DD gelesenen Daten jedoch durch Komprimierungsprogramme wie möglich leiten gzip, Um das Ergebnis zu optimieren und die endgültige Dateigröße zu reduzieren. Sagen Sie zum Beispiel, wir möchten einen Klon des gesamten /dev /sda -Blockgeräts erstellen. Wir könnten schreiben:

$ sudo dd if =/dev/sda bs = 1m | gzip -c -9> sda.dd.gz

Im obigen Beispiel haben wir DD angewiesen, aus dem /Dev /SDA -Gerät zu lesen, und wir haben auch die Blockgröße auf 1M geändert, was uns in solchen Situationen eine bessere Leistung erbringen kann. Wir haben dann die Daten gelobt und sie weiter mit dem verarbeitet gzip Programm, das wir mit dem aufgerufen haben -C (kurz für --zu stegen) Und -9 Option, die das Programm anweist, die maximal verfügbare Komprimierung zu verwenden. Schließlich haben wir die Ausgabe in die „SDA“ umgeleitet.dd.GZ ”Datei. Übrigens, wenn Sie mehr darüber erfahren möchten Umleitungen Sie können unseren Artikel zu diesem Thema lesen.

Ein Blockgerät wischen

Ein weiterer DD -Anwendungsfall ist das Ablenken eines Geräts. Es gibt viele Situationen, in denen wir möglicherweise einen solchen Vorgang ausführen müssen: Wir möchten vielleicht eine Festplatte verkaufen und sicher sein, dass der vorherige Inhalt aus offensichtlichen Datenschutzgründen vollständig gelöscht wird, oder wir möchten möglicherweise Daten löschen, bevor wir die Verschlüsselung einrichten. Im ersten Fall würde es ausreichen, die Festplatte mit Nullen zu überschreiben:

$ sudo dd if =/dev/null bs = 1m von =/dev/sda

Der obige Befehl weist DD an, aus dem /dev /null -Gerät zu lesen, das Nullzeichen liefert und sie auf die Geräte schreibt, bis es vollständig gefüllt ist.

Bevor wir eine Verschlüsselungsschicht auf unserem System einrichten, möchten wir möglicherweise die Festplatte mit zufälligen Daten füllen, um die Sektoren zu rendern, die Daten nicht von den leeren zu unterscheiden und Metadaten -Lecks zu vermeiden. In diesem Fall möchten wir Daten aus dem lesen /dev/random oder /dev/urandom Geräte:

$ sudo dd if =/dev/urandom bs = 1m von =/dev/sda

Beide Befehle müssen abhängig von der Größe und dem Typ des betreffenden Blockgeräts und der Quelle der verwendeten Zufallsdaten erhebliche Zeit haben, um fertig zu werden, /dev/random langsamer sein (es blockiert es, bis es nicht genug Umgebungsgeräusche sammelt), aber zufällige Daten mit höherer Qualität zurückgeben als /dev/urandom.



Daten konvertieren

Der conc DD -Optionen werden verwendet, um Datenkonvertierungen anzuwenden. Die Optionen müssen mit einer von der Kommas getrennten Liste von Symbolen als Argumente zur Verfügung gestellt werden. Hier einige der am häufigsten verwendeten:

  • NoError - Dadurch verwendet DD, auch nachdem ein Lesefehler aufgetreten ist
  • NOTRUNC - Diese Option weist DD an, die Ausgabedatei nicht abzuschneiden
  • Synchronisation - Diese Option hat besonders sinnvoll, besonders wenn sie zusammen mit NoError verwendet wird. Es weist DD an, alle Eingangsblöcke mit nuls zu padeln.

Ein typischer Fall, in dem wir möglicherweise zusammen mit dem DD führen möchten conv = sync, noError Option ist beim Klonen einer Festplatte, die beschädigte Sektoren enthält. In einem solchen Fall die kein Fehler Die Option wird DD weiter laufen lassen, auch wenn ein Sektor nicht erfolgreich gelesen werden kann, und die Synchronisation Die Option erfolgt, damit die Datenmenge nicht gelesen werden konnte, die sie ersetzt werden Nulle, Damit die Länge der Daten auch dann erhalten bleibt, wenn die tatsächlichen Daten verloren gehen (da es nicht möglich ist, sie zu lesen).

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, den sehr leistungsstarken DD -Befehl zu verwenden. Wir haben einige der typischen Fälle gesehen, in denen das Programm verwendet wird, wie z. Da DD ein sehr leistungsstarkes Dienstprogramm ist, muss es mit extremer Aufmerksamkeit verwendet werden: Nur indem man das Eingangs- und Ausgangsziel umschaltet, kann man in einigen Situationen Daten vollständig auf einer Festplatte zerstören.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Mastering -Bash -Skriptschleifen beherrschen
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • So klonen Sie ein Linux -System
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Linux -Download
  • Klonpartition unter Linux
  • Verschachtelte Schleifen in Bash -Skripten
  • Wie man Kali Linux und Windows 10 Dual -Boot -Start hat