Wie der DD -Befehl unter Linux mit Beispielen funktioniert
- 4559
- 500
- Madleen Vater
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
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
- « So erstellen Sie Multiboot -USB mit Linux
- Konnte nicht locking var lib dpkg lock - ubuntu/debian bekommen »