Dd: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K Textersetzung - „»“ durch „''“ |
||
(118 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''dd''' | '''dd''' - [[Datei]] blockweise lesen und schreiben | ||
= | == Beschreibung == | ||
dd [ | dd ('''d'''isk '''d'''ump) - Bit-genaue Kopie einer Datei | ||
* [[Datei]]en jeder Art | |||
* [[Datenträger]] | |||
* [[Partition]] | |||
; Bit-Genau | |||
Bit-für-Bit bzw. Byte-für-Byte | |||
* ausgelesen | |||
* geschrieben | |||
unabhängig von Inhalt oder Belegung | |||
; Flexiebles Werkzeug | |||
Diskdump ist ein flexiebles Werkzeug | |||
* ab einem bestimmten Startpunkt eine bestimmte Menge ''roher'' Daten liest | |||
* diese 1:1 in eine Zieldatei oder auf ein Zielgerät schreibt | |||
{| class="wikitable" | ; Konvertierung | ||
''dd'' kann gelesen auch Daten konvertieren | |||
; Backup | |||
Diese Eigenschaft erlaubt es, Dateien beliebiger Dateisysteme zu sichern, selbst wenn Linux diese nicht lesen kann | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
sudo dd if=QUELLE of=ZIEL [OPTIONEN] | |||
</syntaxhighlight> | |||
; QUELLE und ZIEL | |||
QUELLE und ZIEL können hierbei sowohl ein Device als auch eine Datei sein | |||
* Werden keine weiteren Optionen angegeben, so werden alle Daten aus QUELLE gelesen | |||
* Handelt es sich bei QUELLE um eine Partition, wird deren gesamter Inhalt kopiert | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
sudo dd if=/dev/sda of=/dev/sdc | |||
</syntaxhighlight> | |||
; Beispiel | |||
Im Beispiel wird die gesamte erste IDE-Festplatte (/dev/sda) des Systems auf die dritte (/dev/sdc) kopiert | |||
* Es sollte jedem bewusst sein, dass der alte Inhalt der dritten Festplatte damit überschrieben wird | |||
* Auch sollte diese über die gleiche Kapazität wie die erste Platte verfügen (sonst muss man sich die Anzahl der kopierten Bytes merken) | |||
* Um die Daten später zurückzuspielen, vertauscht man die Angaben von QUELLE und ZIEL | |||
Ist das Ziel einer Kopieraktion eine Datei, könnte bei Kernel-Versionen <2.4 die Beschränkung der Dateigröße von 2 GB unser Vorhaben zunichte machen, in einem solchen Fall muss die QUELLE auf mehrere Zieldateien aufgeteilt werden | |||
* Hierzu benötigt dd mehrere Optionen | |||
* Mit bs=BYTES muss die Anzahl Bytes, die in einem Schritt zu lesen oder schreiben sind, angegeben werden | |||
* Wieviele Schritte getätigt werden sollen, legt die Option count=ANZAHL fest | |||
* Um bspw. den Masterbootsektor (Mbr) der ersten Festplatte in eine Datei zu schreiben, könnte man folgenden Aufruf verwenden | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
sudo dd if=/dev/sda of=/tmp/mbr.save bs=512 count=1 | |||
</syntaxhighlight> | |||
Um jetzt den Superblock (1 k groß) der ersten Partition zu sichern, müssen sowohl Mbr als auch der 512 Bytes lange Bootsektor (also zwei Blöcke) übersprungen werden | |||
* Hierzu verwendet man die Option skip=ANZAHL | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
sudo dd if=/dev/sda of=/dev/superblock.save bs=512 count=2 skip=2 | |||
</syntaxhighlight> | |||
Wenn dd seine Arbeit verrichtet hat, gibt es eine Statistik aus | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
3385223+0 records in | |||
3385223+0 records out | |||
1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s | |||
</syntaxhighlight> | |||
Mit Hilfe des Signals SIGUSR1(10) kann dd auch während der Arbeit eine Statistik ausgeben | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
# kill -10 $pid | |||
# dd if=/dev/zero of=/dev/null count=10MB & pid=$! | |||
</syntaxhighlight> | |||
== Installation == | |||
'''dd''' ist Teil des [[Pakets]] [[Coreutils]] | |||
== Aufruf == | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
dd [Option] if=Inputfile of=Outputfile | |||
</syntaxhighlight> | |||
=== Optionen === | |||
{| class="wikitable sortable" | |||
|- | |- | ||
| | '''bs=bytes''' | |||
| | Erzwingen von ibs=bytes und obs=bytes. | |||
|- | |- | ||
| | | | '''cbs=bytes''' | ||
| | Konvertieren von bytes Bytes auf einmal. | |||
|- | |- | ||
| | | | '''conv=schlüsselwörter''' | ||
| | Konvertieren der Datei gemäß der kommagetrennten Liste von Schlüsselwörtern. | |||
|- | |- | ||
|count=|| | | | '''count=blöcke''' | ||
| | Nur blöcke Eingabeblöcke kopieren. | |||
|- | |- | ||
| | | | '''ibs=bytes''' | ||
| | Lesen von bytes Bytes auf einmal. | |||
|- | |||
| | '''if=datei''' | |||
| | Lesen aus datei statt von der Standardeingabe. | |||
|- | |||
| | '''obs=bytes''' | |||
| | Schreiben von bytes Bytes zur Zeit. | |||
|- | |||
| | '''of=datei''' | |||
| | Schreiben in datei statt in die Standardausgabe. | |||
|- | |||
| | '''seek=blöcke''' | |||
| | Überspringen von blöcke Blöcken der Größe von obs beim Beginn der Ausgabe. | |||
|- | |||
| | '''skip=blöcke''' | |||
| | Überspringen von blöcke Blöcken der Größe von ibs beim Beginn der Eingabe. | |||
|- | |- | ||
|} | |} | ||
''bytes'' können folgende multiplikativen Endungen tragen: xM M, c 1, w 2, b 512, kD 1000, k 1024. MD 1.000.000, M 1.048.576, GD 1.000.000, G 1.073.741.824, und so weiter für T, P, E, Z, Y. | |||
= | === Schlüsselwörter === | ||
== | {| class="wikitable sortable" | ||
|- | |||
| | '''ascii''' | |||
| | von EBCDIC in ASCII. | |||
|- | |||
| | '''ebcdic''' | |||
| | von ASCII in EBCDIC. | |||
|- | |||
| | '''ibm''' | |||
| | von ASCII in alternatives EBCDIC. | |||
|- | |||
| | '''block''' | |||
| | Auffüllen von mit Zeilenumbrüchen terminierten Datensätzen durch Leerzeichen bis zur cbs-Größe. | |||
|- | |||
| | '''unblock''' | |||
| | Ersetzen von nachlaufenden Leerzeichen in Datensätzen von cbs-Größe mit Zeilenumbrüchen. | |||
|- | |||
| | '''lcase''' | |||
| | Ändern von Großbuchstaben in Kleinbuchstaben. | |||
|- | |||
| | '''notrunc''' | |||
| | Kein Abschneiden der Ausgabedatei. | |||
|- | |||
| | '''ucase''' | |||
| | Ändern von Kleinbuchstaben in Großbuchstaben. | |||
|- | |||
| | '''swab''' | |||
| | Jedes Paar von Eingabebytes vertauschen. | |||
|- | |||
| | '''noerror''' | |||
| | Nach Lesefehlern fortfahren. | |||
|- | |||
| | '''sync''' | |||
| | Jeden Eingabeblock mit NULLen zur ibs-Größe auffüllen; wenn mit block oder unblock benutzt, stattdessen mit Leerzeichen. | |||
|- | |||
|} | |||
=== Argumente === | |||
=== Umgebung === | |||
=== Rückgabewert === | |||
<noinclude> | |||
== Anhang == | |||
=== Siehe auch === | |||
=== Dokumentation === | |||
; Man-Page | |||
; Info-Page | |||
== | === Links === | ||
==== Projekt ==== | |||
==== Weblinks ==== | |||
[[Kategorie:Linux/Storage/Tools]] | |||
[[Kategorie:Linux/Datei/Ausgabe]] | |||
[[Kategorie:Linux/Backup]] | |||
[[Kategorie:Linux/Befehl]] | |||
[[Kategorie:Coreutils]] | |||
{{DEFAULTSORT:dd}} | |||
{{DISPLAYTITLE:dd}} | |||
</noinclude> |
Aktuelle Version vom 31. März 2025, 12:13 Uhr
dd - Datei blockweise lesen und schreiben
Beschreibung
dd (disk dump) - Bit-genaue Kopie einer Datei
- Dateien jeder Art
- Datenträger
- Partition
- Bit-Genau
Bit-für-Bit bzw. Byte-für-Byte
- ausgelesen
- geschrieben
unabhängig von Inhalt oder Belegung
- Flexiebles Werkzeug
Diskdump ist ein flexiebles Werkzeug
- ab einem bestimmten Startpunkt eine bestimmte Menge roher Daten liest
- diese 1:1 in eine Zieldatei oder auf ein Zielgerät schreibt
- Konvertierung
dd kann gelesen auch Daten konvertieren
- Backup
Diese Eigenschaft erlaubt es, Dateien beliebiger Dateisysteme zu sichern, selbst wenn Linux diese nicht lesen kann
sudo dd if=QUELLE of=ZIEL [OPTIONEN]
- QUELLE und ZIEL
QUELLE und ZIEL können hierbei sowohl ein Device als auch eine Datei sein
- Werden keine weiteren Optionen angegeben, so werden alle Daten aus QUELLE gelesen
- Handelt es sich bei QUELLE um eine Partition, wird deren gesamter Inhalt kopiert
sudo dd if=/dev/sda of=/dev/sdc
- Beispiel
Im Beispiel wird die gesamte erste IDE-Festplatte (/dev/sda) des Systems auf die dritte (/dev/sdc) kopiert
- Es sollte jedem bewusst sein, dass der alte Inhalt der dritten Festplatte damit überschrieben wird
- Auch sollte diese über die gleiche Kapazität wie die erste Platte verfügen (sonst muss man sich die Anzahl der kopierten Bytes merken)
- Um die Daten später zurückzuspielen, vertauscht man die Angaben von QUELLE und ZIEL
Ist das Ziel einer Kopieraktion eine Datei, könnte bei Kernel-Versionen <2.4 die Beschränkung der Dateigröße von 2 GB unser Vorhaben zunichte machen, in einem solchen Fall muss die QUELLE auf mehrere Zieldateien aufgeteilt werden
- Hierzu benötigt dd mehrere Optionen
- Mit bs=BYTES muss die Anzahl Bytes, die in einem Schritt zu lesen oder schreiben sind, angegeben werden
- Wieviele Schritte getätigt werden sollen, legt die Option count=ANZAHL fest
- Um bspw. den Masterbootsektor (Mbr) der ersten Festplatte in eine Datei zu schreiben, könnte man folgenden Aufruf verwenden
sudo dd if=/dev/sda of=/tmp/mbr.save bs=512 count=1
Um jetzt den Superblock (1 k groß) der ersten Partition zu sichern, müssen sowohl Mbr als auch der 512 Bytes lange Bootsektor (also zwei Blöcke) übersprungen werden
- Hierzu verwendet man die Option skip=ANZAHL
sudo dd if=/dev/sda of=/dev/superblock.save bs=512 count=2 skip=2
Wenn dd seine Arbeit verrichtet hat, gibt es eine Statistik aus
3385223+0 records in
3385223+0 records out
1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
Mit Hilfe des Signals SIGUSR1(10) kann dd auch während der Arbeit eine Statistik ausgeben
# kill -10 $pid
# dd if=/dev/zero of=/dev/null count=10MB & pid=$!
Installation
dd ist Teil des Pakets Coreutils
Aufruf
dd [Option] if=Inputfile of=Outputfile
Optionen
bs=bytes | Erzwingen von ibs=bytes und obs=bytes. |
cbs=bytes | Konvertieren von bytes Bytes auf einmal. |
conv=schlüsselwörter | Konvertieren der Datei gemäß der kommagetrennten Liste von Schlüsselwörtern. |
count=blöcke | Nur blöcke Eingabeblöcke kopieren. |
ibs=bytes | Lesen von bytes Bytes auf einmal. |
if=datei | Lesen aus datei statt von der Standardeingabe. |
obs=bytes | Schreiben von bytes Bytes zur Zeit. |
of=datei | Schreiben in datei statt in die Standardausgabe. |
seek=blöcke | Überspringen von blöcke Blöcken der Größe von obs beim Beginn der Ausgabe. |
skip=blöcke | Überspringen von blöcke Blöcken der Größe von ibs beim Beginn der Eingabe. |
bytes können folgende multiplikativen Endungen tragen: xM M, c 1, w 2, b 512, kD 1000, k 1024. MD 1.000.000, M 1.048.576, GD 1.000.000, G 1.073.741.824, und so weiter für T, P, E, Z, Y.
Schlüsselwörter
ascii | von EBCDIC in ASCII. |
ebcdic | von ASCII in EBCDIC. |
ibm | von ASCII in alternatives EBCDIC. |
block | Auffüllen von mit Zeilenumbrüchen terminierten Datensätzen durch Leerzeichen bis zur cbs-Größe. |
unblock | Ersetzen von nachlaufenden Leerzeichen in Datensätzen von cbs-Größe mit Zeilenumbrüchen. |
lcase | Ändern von Großbuchstaben in Kleinbuchstaben. |
notrunc | Kein Abschneiden der Ausgabedatei. |
ucase | Ändern von Kleinbuchstaben in Großbuchstaben. |
swab | Jedes Paar von Eingabebytes vertauschen. |
noerror | Nach Lesefehlern fortfahren. |
sync | Jeden Eingabeblock mit NULLen zur ibs-Größe auffüllen; wenn mit block oder unblock benutzt, stattdessen mit Leerzeichen. |
Argumente
Umgebung
Rückgabewert
Anhang
Siehe auch
Dokumentation
- Man-Page
- Info-Page
Links
Projekt
Weblinks