Dd: Unterschied zwischen den Versionen
Zeile 61: | Zeile 61: | ||
|} | |} | ||
; ''bytes'' können folgende multiplikativen Endungen tragen: | <!-- | ||
xM M | ; Enheiten | ||
''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 === | === Schlüsselwörter === |
Version vom 3. September 2025, 12:17 Uhr
dd - Datei blockweise lesen und schreiben
Beschreibung
disk dump (dd) erstellt bit-genaue Kopien von Dateien
- Bit-Genau
Bit-für-Bit ausgelesen und schreiben
- unabhängig von Inhalt oder Belegung
- Flexiebles Werkzeug
- liest ab einem Startpunkt eine bestimmte Menge roher Daten
- diese werden 1:1 in das Ziel (Datei/Gerät) geschieben
- Konvertierung
dd kann Daten konvertieren
- 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. |
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
Beispiel
- Backup
Dateisysteme sichern, auch 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
Im Beispiel wird die gesamte erste 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
sudo kill -10 $pid
<!--
dd if=/dev/zero of=/dev/null count=10MB & pid=$!
-->
Anhang
Siehe auch
Dokumentation
- Man-Page
- Info-Page
Links
Projekt
Weblinks