Zum Inhalt springen

dd

Aus Foxwiki
Die 5 zuletzt angesehenen Seiten:  Popd » Spezial:Linkliste/OpenSSL » Sha256sum » GNU » dd
Version vom 11. Mai 2025, 13:43 Uhr von Dirkwagner (Diskussion | Beiträge) (Textersetzung - „line>“ durch „line copy>“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

dd - Datei blockweise lesen und schreiben

Beschreibung

dd (disk dump) - Bit-genaue Kopie einer Datei

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