GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux DD-Befehl - 15 Beispiele mit allen Optionen

Der Linux-Befehl dd ist eines der leistungsstärksten Dienstprogramme, das auf vielfältige Weise verwendet werden kann. Dieses Tool wird hauptsächlich zum Kopieren und Konvertieren von Daten verwendet, daher steht es für Data Duplicator. Dieses Tool kann verwendet werden für:

  • Sichern und Wiederherstellen einer gesamten Festplatte oder einer Partition.
  • Erstellen von virtuellen Dateisystemen und Backup-Images von CDs oder DVDs, ISO-Dateien genannt
  • Kopieren Sie Regionen von Raw-Gerätedateien, z. B. zum Sichern des 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 großen Datenverlusten führen kann. Einige Leute betrachten dieses Tool als Datenzerstörer.

Syntax des dd-Befehls

Die grundlegende Verwendung des dd-Befehls ist ziemlich einfach, da er nur zwei Argumente benötigt:if =, um die Eingabedatei und von anzugeben =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 damit jedoch eine Festplatte klonen. Die Syntax ist

dd if=<source file name> of=<target file name> [Options]

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

1. Sichern und Wiederherstellen einer gesamten Festplatte oder einer Partition

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

a. Gesamte Festplatte auf Festplatte sichern

Sie können alle Daten (gesamte Festplatte) von der Festplatte /dev/sda kopieren nach /dev/sdb . dd weiß nichts über das Dateisystem oder die Partitionen; es wird einfach alles aus /dev/sda kopiert nach /dev/sdb . Die jeweils zu kopierende Blockgröße muss mit bs angegeben werden Möglichkeit. Dadurch wird also die Festplatte mit den gleichen Daten auf der gleichen Partition geklont.

# dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
97281+0 records in
97280+0 records out
99614720 bytes (100 MB) copied, 2.75838 s, 36.1 MB/s

Dies funktioniert nur, wenn das zweite Gerät genauso groß oder größer als das erste ist. Andernfalls erhalten Sie auf der zweiten Partition abgeschnittene und wertlose Partitionen. Dabei steht if für Eingabedatei, of für Ausgabedatei und bs für die Blockgröße (Anzahl der gleichzeitig zu lesenden/schreibenden Bytes). Stellen Sie sicher, dass Sie Blockgrößen in Vielfachen von 1024 Bytes verwenden, was 1 KB entspricht. Wenn Sie keine Blockgröße angeben, verwenden Sie eine Standardblockgröße von 512 Byte. Die conv Wertparameter noerror ermöglicht dem Tool, die Daten weiter zu kopieren, obwohl es auf Fehler stößt. Die Sync-Option ermöglicht die Verwendung von synchronisiertem I/O.

b. DD-Disk-Image (Datei-Image) erstellen

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

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

Sie können die Ausgabedatei an einem beliebigen Ort speichern, müssen jedoch einen Dateinamen mit der Endung .img angeben Verlängerung wie oben. Statt /tmp/sdadisk.img , könnten Sie es beispielsweise unter /sdadisk.img speichern wenn Sie möchten.

c. Komprimiertes Disk-Image erstellen

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

Das Rohr | Der Operator macht die Ausgabe des linken Befehls zur Eingabe des rechten Befehls. Das -c Option schreibt die Ausgabe auf die Standardausgabe und behält die Originaldateien unverändert bei.

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

Statt einer ganzen Festplatte können Sie nur eine einfache Partition sichern. Sie müssen nur den Partitionsnamen in der Eingabedatei wie unten angeben

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

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

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

e. Wiederherstellen einer Festplatte oder eines Partitionsabbilds

Das Speichern einer Festplatte oder einer Partition hilft bei der Wiederherstellung aller Daten, wenn es ein Problem mit unserem ursprünglichen Laufwerk gibt. Zur Wiederherstellung müssen Sie die Eingabedatei mit der Ausgabedatei umkehren, die während des Sicherungsvorgangs wie unten angezeigt wird.

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

Sie werden Daten abrufen, die vor der Sicherungsoperation vorhanden waren und nicht nach der Operation

e. Komprimiertes Image wiederherstellen

Sie müssen zuerst die komprimierte Datei und die Ausgabedatei angeben, die die zuvor komprimierte Festplatte ist.

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

Die Option -d dient hier zum Dekomprimieren. Beachten Sie die Ausgabedatei. Sie können die wiederhergestellte Festplatte bereitstellen, um den Inhalt anzuzeigen. Beachten Sie, dass die Daten nach dem letzten Komprimierungs-Backup-Vorgang hinzugefügt werden.

2. Virtuelles Dateisystem/Backup-Images von CDs oder DVDs als ISO-Dateien erstellen

Sie müssen möglicherweise aus bestimmten Gründen ein virtuelles Dateisystem unter Linux erstellen, z. B. zum Erstellen einer virtuellen Maschine auf Ihrem Linux-Host. Möglicherweise müssen Sie 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 brauchen /dev/zero Dies ist eine Datei, die verwendet wird, um eine Datei ohne Daten, aber mit der erforderlichen Größe zu erstellen (eine Datei mit allen Nullen). Mit anderen Worten, dies erstellt eine Datendatei mit lauter Nullen in der Datei, die einer Datei die Größe gibt.

# dd if=/dev/zero of=/file bs=1024K count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.21755 s, 431 MB/s

Die Option count bezieht sich auf die Anzahl der zu kopierenden Eingangsblöcke. In Kombination mit dem Blockgrößenwert gibt es die zu kopierende Gesamtgröße an. Zum Beispiel bs=1024k und count=500 geben Sie eine Größe=1024K*500 =524288000 Byte =524MB an

Lassen Sie uns nun die Größe unserer Datei überprüfen

# ls -lh /file
-rw-r--r-- 1 root root 500M May 17 18:57 /file

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

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

Wenn Sie während des Vorgangs eine vorhandene Ausgabedatei angeben, gehen deren Daten verloren. Aus bestimmten Gründen kann es erforderlich sein, eine Blockgröße der Ausgabedatei zu ersetzen.

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

Die notrunc Option bezieht sich darauf, die Datei nicht abzuschneiden, sondern nur die ersten 512 Bytes zu ersetzen, falls vorhanden. Andernfalls erhalten Sie eine 512-Byte-Datei

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

Sie fragen sich vielleicht, warum Sie den Inhalt Ihrer CD nicht einfach 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 andererseits Sektor für Sektor kopiert, kopiert es auch diese Informationen.

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

Sie müssen wissen, dass Sie die -o loop verwenden müssen Option, mit der Sie eine Datei wie jedes normale Gerät mounten können. Also, um /mycd.iso zu mounten auf /mnt/cd gehen Sie wie folgt vor

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

d) Erstellen Sie ein bootfähiges USB-Laufwerk

Nehmen wir an, wir haben das Centos-ISO-Image hier in dieses Verzeichnis "~/Downloads/" heruntergeladen.

if=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso - Eingabedatei befindet sich im Pfad '~/Downloads/CentOS-8-x86_64-1905-dvd1.iso'

of=/dev/sdb - Ausgabedatei befindet sich im Pfad '/dev/sdb'

bs=1M - Lesen Sie von „~/Downloads/CentOS-8-x86_64-1905-dvd1.iso“ und schreiben Sie jeweils 1 Megabyte an Daten in „/dev/sdb“.

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

3. MBR sichern und wiederherstellen

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

a. MBR sichern

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

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

Mit dem count=1 und bs=512 , werden nur 512 Bytes kopiert, was der Größe unseres MBR entspricht.

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

# od -xa /tmp/sdambr.img
0000000    bf52    81f4    8b66    832d    087d    0f00    e284    8000
          R   ?   t soh   f  vt   - etx   }  bs nul  si eot   b nul nul
0000020    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 aus wählt hexadezimale 2-Byte-Einheiten aus

b. Sichern der Boot-Daten des 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 Partitionstabelle und 2 Bytes Signatur. Das bedeutet, dass wir die Partitionstabelle und die Byte-Signatur ausschließen können, während wir den MBR sichern, 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. MBR aus MBR-Image wiederherstellen

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

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

3. Datenformate konvertieren

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.

a. Konvertiert das Datenformat einer Datei von EBCDIC nach ASCII

Wenn Sie eine ebcdic-Datei haben, die meistens von Mainframe-Systemen abgerufen wird, möchten Sie sie in ASCII konvertieren, um Änderungen mit Texteditoren auf UNIX-Servern vorzunehmen

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

Die conv value-Parameter ist jetzt ascii weil wir von EBCDIC in ASCII umwandeln

b. Konvertiert das Datenformat einer Datei von ASCII nach EBCDIC

Nachdem Sie die ASCII-Version geändert haben und fertig sind, können Sie sie zurück in EBCDIC konvertieren, damit sie von Ihrer Anwendung verwendet werden kann.

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

Die conv Wertparameter ist jetzt e bcdic weil wir von ASCII nach EBCDIC konvertieren. Wenn Sie nur eine bestimmte Anzahl von Bytes durch eine entsprechende Anzahl von Bytes mit unterschiedlichen Zeichen ersetzen, wäre die Konvertierung reibungslos und die Anwendung beim Lesen der Datei sollte keine Probleme haben.

4. Groß-/Kleinschreibung einer Datei umwandeln

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

# cat file10
test dd convert

a. Konvertieren einer Datei in Großbuchstaben

Da unsere Textdatei in Kleinbuchstaben geschrieben ist, werden wir sie in Großbuchstaben umwandeln

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

Der Befehl erstellt die angegebene neue Datei. Siehe das jetzt conv Option nimmt ucase Wert. 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

Beachten Sie, dass wir lcase  verwenden von conv Option zum Umwandeln von Großbuchstaben in Kleinbuchstaben.

# cat file30 
test dd convert

Der Befehl dd konvertiert nicht die Dateinamen, sondern nur deren Inhalt.

Schlussfolgerung

Der dd-Befehl, obwohl technisch gesehen kein Archivierungsbefehl, ist in gewisser Weise ähnlich, da er eine ganze Partition oder Platte in eine Datei kopieren kann und umgekehrt.


Linux
  1. wc Linux-Befehl mit Beispielen

  2. Linux-Sortierungsbefehl mit Beispielen

  3. Linux Tee-Befehl mit Beispielen

  4. Linux-Kopfbefehl mit Beispielen

  5. JQ-Befehl in Linux mit Beispielen

Linux-CD-Befehl mit Beispielen

Linux-Uhrbefehl mit Beispielen

Wartebefehl in Linux mit Beispielen

Linux-Exportbefehl mit Beispielen

Neustartbefehl unter Linux mit Beispielen

Linux-IP-Befehl mit Beispielen