|
|
Zeile 115: |
Zeile 115: |
| <noinclude> | | <noinclude> |
|
| |
|
| == Beispiel ==
| |
| ; Backup
| |
| Dateisysteme sichern, auch wenn Linux diese nicht lesen kann
| |
| <syntaxhighlight lang="bash" highlight="1" line copy>
| |
| 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 copy>
| |
| sudo dd if=/dev/sda of=/dev/sdc
| |
| </syntaxhighlight>
| |
| 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
| |
|
| |
| <syntaxhighlight lang="bash" highlight="1" line copy>
| |
| 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 copy>
| |
| 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 copy>
| |
| 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 copy>
| |
| sudo kill -10 $pid
| |
| <!--
| |
| dd if=/dev/zero of=/dev/null count=10MB & pid=$!
| |
| -->
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
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.
|
Enheiten
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
</syntaxhighlight>
Anhang
Siehe auch
Dokumentation
- Man-Page
- Info-Page
Links
Projekt
Weblinks