Site Overlay

Linux DD Command – 15 Beispiele mit allen Optionen

Der Linux dd command ist eines der leistungsstärksten Dienstprogramm, das in einer Vielzahl von Möglichkeiten verwendet werden kann. Dieses Tool wird hauptsächlich zum Kopieren und Konvertieren von Daten verwendet und steht daher für Data Duplicator. Dieses Tool kann verwendet werden für:

  • Sichern und Wiederherstellen einer ganzen Festplatte oder Partition.
  • Erstellen von virtuellen Dateisystem und Backup-Images von CD oder DVDs namens ISO-Dateien
  • Kopieren Sie Regionen von RAW-Gerätedateien wie Sichern MBR (Master Boot Record).
  • Konvertieren von Datenformaten wie ASCII in EBCDIC.,
  • Konvertieren von Kleinbuchstaben in Großbuchstaben und umgekehrt.

Nur der superuser kann diesen Befehl ausführen. Sie sollten bei der Verwendung dieses Befehls sehr vorsichtig sein, da eine unsachgemäße Verwendung zu enormen Datenverlusten führen kann. Einige Leute betrachten dieses Tool als Datenvernichter.

Syntax des Befehls dd

Die grundlegende Verwendung des Befehls dd ist ziemlich einfach, da nur zwei Argumente benötigt werden: if=, um die Eingabedatei anzugeben, und of=, um die Ausgabedatei anzugeben. Die Argumente für diese Optionen können entweder Dateien oder Blockgeräte sein., Ich würde jedoch nicht empfehlen, dd zum Kopieren von Dateien zu verwenden, da cp dies viel einfacher macht. Sie können es jedoch zum Klonen einer Festplatte verwenden. Die Syntax lautet

dd if=<source file name> of=<target file name> 

Wir werden verschiedene Optionen lernen, während wir die Befehlsbeispiele durchgehen.

Sichern und Wiederherstellen einer gesamten Festplatte oder Partition

Es ist möglich, alle Daten von einer gesamten Festplatte/Partition auf einer anderen Festplatte/Partition zu speichern. Keine einfache Kopie als cp-Befehl, sondern eine Kopie in Blockgröße.

ein., Backup gesamte Festplatte auf Festplatte

Sie können alle Daten (gesamte Festplatte) von der Festplatte kopieren /dev/sda zu /dev/sdb. dd weiß nichts über das Dateisystem oder Partitionen; es kopiert einfach alles von /dev/sda nach /dev/sdb. Sie müssen die zu kopierende Blockgröße mit der Option bs angeben. Dadurch wird die Festplatte mit denselben Daten auf derselben Partition geklont.

Dies funktioniert nur, wenn das zweite Gerät so groß oder größer als das erste ist., Andernfalls erhalten Sie abgeschnittene und wertlose Partitionen auf der zweiten. Hier steht if für Eingabedatei, of für Ausgabedatei und bs für die Blockgröße (Anzahl der zu lesenden/schreibenden Bytes gleichzeitig). Stellen Sie sicher, dass Sie Blockgrößen in Vielfachen von 1024 Byte verwenden, was 1 KB entspricht. Wenn Sie keine Blockgröße angeben, verwenden Sie eine Standardblockgröße von 512 Byte. Derconv value Parameter noerror ermöglicht es dem Tool, die Daten auch dann weiter zu kopieren, wenn Fehler auftreten. Die Synchronisierungsoption ermöglicht die Verwendung synchronisierter E / A.

b., Erstellen eines Disk-Images (File Image)

Sie können ein Image einer Disk oder eines Datei-Images erstellen. Das Sichern einer Festplatte auf einem Image ist schneller als das Kopieren der genauen Daten. Auch Disk-Image macht die Wiederherstellung viel einfacher.

# dd if=/dev/sda of=/tmp/sdadisk.img

Sie können die Ausgabedatei dort speichern, wo Sie möchten, aber Sie müssen einen Dateinamen angeben, der wie oben mit .img endet. Anstelle von /tmp/sdadisk.img können Sie es beispielsweise bei /sdadisk.img speichern.

c., Erstellen eines komprimierten Disk-Images

Da dd den genauen Inhalt einer gesamten Festplatte erstellt, bedeutet dies, dass es zu viel Größe benötigt. Sie können das Disk-Image mit dem folgenden Befehl komprimieren

# dd if=/dev/vda | gzip -c >/tmp/vdadisk.img.gz

Der Pipe | Operator lässt die Ausgabe des linken Befehls zur Eingabe des rechten Befehls werden. Die Option -c schreibt die Ausgabe in die Standardausgabe und hält die Originaldateien unverändert.

d. Sichern Sie eine Partition oder klonen Sie eine Partition auf eine andere

Anstelle einer gesamten Festplatte können Sie nur eine einfache Partition sichern., Sie müssen nur den Partitionsnamen in der Eingabedatei wie folgt angeben

# dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerror,sync

Dadurch wird die Partition synchronisiert /dev/sda1 zu /dev/sdb1. Sie müssen überprüfen, ob die Größe von /dev/sdb1 größer sein sollte als /dev/sda1. Oder Sie können ein Partitionsabbild wie folgt erstellen

# dd if=/dev/sda1 of=/tmp/sda1.img

e. Wiederherstellen einer Festplatte oder eines Partitionsabbilds

Speichern Sie eine Festplatte oder Partition hilft bei der Wiederherstellung aller Daten, wenn es ein Problem mit unserem ursprünglichen Laufwerk gibt. , Zum Wiederherstellen müssen Sie die Eingabedatei mit der während des Sicherungsvorgangs angegebenen Ausgabedatei wie folgt umkehren.

# dd if=/tmp/sdadisk.img of=/dev/sda

Sie rufen Daten ab, die vor dem Sicherungsvorgang und nicht nach dem Vorgang vorhanden waren

e. Wiederherstellen des komprimierten Images

Sie müssen zuerst die komprimierte Datei und die Ausgabedatei angeben, bei der es sich um die zuvor komprimierte Festplatte handelt.

# gzip -dc /tmp/vdadisk.img.gz | dd of=/dev/vda

Die Option-d ist hier zu dekomprimieren. Beachten Sie die Ausgabedatei. Sie können die wiederhergestellte Festplatte mounten, um den Inhalt anzuzeigen., Beachten Sie, dass Sie Daten nach dem letzten Komprimierungssicherungsvorgang hinzugefügt werden.

Erstellen von virtuellen Dateisystem / Backup-Images von CD oder DVDs als ISO-Dateien

Sie können ein virtuelles Dateisystem auf Linux aus einigen Gründen wie das Erstellen einer virtuellen Maschine auf Ihrem Linux-Host erstellen müssen. Sie können auch ein Backup-ISO-Image einer CD oder DVD erstellen

a. Erstellen eines virtuellen Dateisystems

Ein virtuelles Dateisystem ist ein Dateisystem, das in einer Datei vorhanden ist, die wiederum auf einer physischen Festplatte vorhanden ist. Sie können es benötigen, um beispielsweise ein zusätzliches Swap-oder Loop-Gerät oder eine virtuelle Maschine zu erstellen., Wir benötigen /dev/zero, eine Datei, mit der eine Datei ohne Daten, aber mit der erforderlichen Größe erstellt wird (eine Datei mit allen Nullen). Mit anderen Worten, dadurch wird eine Datendatei mit allen Nullen in der Datei erstellt, die einer Datei die Größe gibt.

# dd if=/dev/zero of=/file bs=1024K count=500500+0 records in500+0 records out524288000 bytes (524 MB) copied, 1.21755 s, 431 MB/s

Die option count bezieht sich auf die Anzahl der input-Blöcke kopiert werden. In Kombination mit dem Wert für die Blockgröße wird die zu kopierende Gesamtgröße angegeben., Zum Beispiel bs=1024k und count=500 Geben Sie eine Größe=1024K*500 =524288000 Bytes =524MB

Nun lassen Sie uns die Größe unserer Datei überprüfen

Sie können sehen, dass wir unser virtuelles Dateisystem mit der angegebenen Größe erstellt haben. Sie können es jetzt verwenden, um ein Gerät oder eine virtuelle Festplatte oder etwas anderes zu erstellen.

b. Ändern Sie die ersten 512 Bytes einer Datei mit Nulldaten

Wenn Sie während des Vorgangs eine vorhandene Ausgabedatei angeben, verlieren Sie deren Daten. Aus einigen Gründen können Sie eine Blockgröße der Ausgabedatei ersetzen müssen.,

dd if=/dev/zero of=file1 bs=512 count=1 conv=notrunc

Die notrunc option bezieht sich nicht die datei abschneiden, nur ersetzen die erste 512 bytes, wenn es existiert. Andernfalls erhalten Sie eine 512-Byte-Datei

c. Erstellen eines Backup-ISO-Images von CD oder DVD

Sie fragen sich vielleicht, warum nicht einfach den Inhalt Ihrer CD in ein Verzeichnis kopieren. Wie würden Sie mit dem Bootsektor einer CD umgehen? Sie können das nicht als Datei auf dem Gerät finden, da es nur der erste Sektor ist. Da dd Sektor für Sektor kopiert, wird es andererseits auch diese Informationen kopieren.,

# dd if=/dev/cdrom of=/mycd.iso

Sie müssen wissen, dass Sie die Option -o loop verwenden müssen, mit der Sie eine Datei wie jedes normale Gerät mounten können. Um also im Verzeichnis /mnt/cd zu mounten, führen Sie wie folgt aus

# mount -o loop /mycd.iso /mnt/cd

d) Erstellen Sie ein bootfähiges USB-Laufwerk

Nehmen wir an, wir haben centos iso-Image hier in dieses Verzeichnis „~/Downloads/“heruntergeladen.

if=~/Downloads/CentOS-8-x86_64-1905-dvd1.die ISO-Eingabedatei befindet sich im Pfad ‚~/Downloads/CentOS-8-x86_64-1905-dvd1.,iso‘

of=/dev/sdb – Ausgabe-Datei in dem Pfad „/dev/sdb‘

bs=1M – Read from ‚~/Downloads/CentOS-8-x86_64-1905-dvd1.iso ‚und schreiben Sie in’/dev / sdb ‚ jeweils 1 Megabyte Daten.

# dd if=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso von= / dev/sdb bs=1M

Sichern und Wiederherstellen von MBR

Der GRUB-Bootloader wird am häufigsten im MBR des bootfähigen Laufwerks gespeichert. Der MBR macht die ersten 512 Bytes der Festplatte aus und ermöglicht bis zu 466 Bytes Speicherplatz für den Bootloader. Der zusätzliche Speicherplatz wird zum Speichern der Partitionstabelle für dieses Laufwerk verwendet., Wenn MBR beschädigt wird, können wir nicht in Linux booten.

a. MBR sichern

Da der MBR die ersten 512 Bytes der Festplatte ausmacht, müssen wir nur diese Blockgröße kopieren

# dd if=/dev/sda of=/tmp/sdambr.img bs=512 count=1

Mit der count=1 und werden nur 512 Bytes kopiert, die der Größe unseres MBR entsprechen.,

Sie können den gespeicherten MBR mit dem Befehl od anzeigen, der Dateien in oktalen und anderen Formaten wie folgt speichert

# od -xa /tmp/sdambr.img0000000 bf52 81f4 8b66 832d 087d 0f00 e284 8000 R ? t soh f vt - etx } bs nul si eot b nul nul0000020 ff7c 7400 6646 1d8b 8b66 044d 3166 b0c0 | del nul t F f vt gs f vt M eot f 1 @ 0

-a Option wählt benannte Zeichen und -x wählt hexadezimale 2-Byte-Einheiten

b. Sichern der Startdaten von MBR mit Ausnahme der Partitionstabelle

Die MBR 512 Byte Daten befinden sich im ersten Sektor der Festplatte. Es besteht aus 446 bytes bootstrap, 64 bytes die Partitionstabelle und 2 bytes der Signatur., Dies bedeutet, dass wir die Partitionstabelle und die Byte-Signatur beim Sichern des MBR ausschließen können, wobei nur eine Blockgröße beibehalten wird, die der Bootstrap-Größe entspricht.

# dd if=/dev/sda of=/tmp/sdambr2.img bs=446 count=1

c. Wiederherstellen von MBR aus MBR-Image

Sie können Ihren MBR wiederherstellen, wie in den vorherigen Befehlen gezeigt

# dd if=/tmp/sdambr.img of=/dev/sda

Konvertieren von Datenformaten

Wenn eine Eingabedatei einen Zeichensatz verwendet, der nicht der native Zeichensatz des Hostcomputers ist, muss der Importoperator eine Konvertierung durchführen. , Wenn beispielsweise ASCII das native Format für Zeichenfolgen auf Ihrem Hostcomputer ist, die Eingabedatendatei jedoch Zeichenfolgen mit EBCDIC darstellt, müssen Sie EBCDIC in ASCII konvertieren und umgekehrt.

ein. Konvertieren Sie das Dateiformat der Datei von EBCDIC nach ASCII

Wenn es eine ebcdic-Datei mit, meist abgerufen von mainframe-Systemen, Sie möchten, konvertieren Sie Sie in ASCII für die Durchführung von änderungen mithilfe von text-Editoren auf UNIX-Server

# dd if=textfile.ebcdic of=textfile.ascii conv=ascii

conv parameter value, jetzt ist der ascii-weil wir Konvertierung von EBCDIC nach ASCII

b., Konvertieren Sie das Datenformat einer Datei von ASCII in EBCDIC

Nachdem Sie die ASCII-Version geändert haben, können Sie sie anschließend wieder in EBCDIC konvertieren, um sie von Ihrer Anwendung zu verwenden.

# dd if=textfile.ascii of=textfile.ebcdic conv=ebcdic

Der Wertparameter conv ist jetzt ebcdic, da wir von ASCII in EBCDIC konvertieren. Wenn Sie nur eine bestimmte Anzahl von Bytes durch eine äquivalente Anzahl von Bytes mit unterschiedlichen Zeichen ersetzen, ist die Konvertierung reibungslos und das Lesen der Datei durch die Anwendung sollte keine Probleme haben.,

Der Fall einer Datei

DD Befehl kann auch für eine erstaunliche Sache verwendet werden. Es kann den gesamten Text (Alphabete) in einer Datei in Groß-oder Kleinbuchstaben konvertieren und umgekehrt. Für das folgende Beispiel haben wir eine Datei für die Tests.

# cat file10test dd convert

a. Konvertieren einer Datei in Großbuchstaben

Da sich unser Textdateibeispiel in Kleinbuchstaben befindet, konvertieren wir es in Großbuchstaben

# dd if=~/file10 of=~/file20 conv=ucase

Der Befehl erstellt die angegebene neue Datei. Sehen Sie, dass jetzt die Option conv den ucase-Wert annimmt., Lassen Sie uns das Ergebnis überprüfen

# cat file20 TEST DD CONVERT

b. Konvertieren einer Datei in Kleinbuchstaben

Jetzt führen wir die umgekehrte Operation durch, die in Kleinbuchstaben konvertiert wird

# dd if=~/file20 of=~/file30 conv=lcase

Sehen Sie, dass wir lcase von conv Option verwenden, um von Großbuchstaben in Kleinbuchstaben zu konvertieren.

# cat file30 test dd convert

dd-Befehl konvertiert nicht die Dateinamen, sondern nur sein Inhalt.

Der Befehl dd ist zwar technisch gesehen kein Archivierungsbefehl, ähnelt jedoch in gewisser Weise, da er eine ganze Partition oder Festplatte in eine Datei kopieren kann und umgekehrt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.