dd kopiert Daten blockweise ("dump device")
Inhaltsverzeichnis
Anwendungen
In den Beispielen wird der Inhalt der Zielplatte überschrieben und geht dabei verloren!
Bei den u.g. Beispielen wird hda immer als Quellplatte, hdc als Zielplatte verwendet.
Es wird eine Blockgröße von einem Zylinder verwendet, hier als Beispiel 16065b (b=Block=Sektor=512Byte). Man bekommt diesen Wert mit fdisk -l /dev/hda. Vorteil: die zu kopierende Blockzahl entspricht genau der Zylinderzahl der Festplatte. Letztlich kann man die Blockgröße aber so wählen, wie man will.
Man sollte ggf. mit hdparm -d1 /dev/hda ; hdparm -d1 /dev/hdc den UDMA-Modus einschalten, im PIO-Modus ist das deutlich langsamer.
Ein weiteres Einsatzgebiet ist die Forensik: http://www.crazytrain.com/dd.html
Platten kopieren
Beim Kopieren sollte man v.a. auf Diskrepanzen bei der Ausgabe am Ende von dd achten.
Lokal auf Zielplatte gleicher Geometrie:
root@localhost # dd if=/dev/hda of=/dev/hdc bs=16065b
Über Netzwerk mit netcat:
root@target # nc -l 1234 | dd of=/dev/hdc bs=16065b root@source # dd if=/dev/hda bs=16065b | nc targethost 1234
Image einer Platte erstellen
# dd if=/dev/hda bs=16065b | gzip -1 >/mnt/vielplatz/plattenimage.gz
Platte mit Image laden
# gunzip -dc /mnt/vielplatz/plattenimage.gz | dd of=/dev/hdc bs=1606225b
Platte löschen
Nur MBR (Bootcode + Partitionstabelle):
root@localhost # dd if=/dev/zero of=/dev/hdc count=1
count=1 bedeutet, daß der Vorgang nur einmal durchgeführt wird
Ganze Platte:
root@localhost # dd if=/dev/zero of=/dev/hdc
Besonders sicher (mehrfach wiederholen, ca. 5x):
root@localhost # dd if=/dev/urandom of=/dev/hdc
Den Boot-Sektor der Festplatte sichern
Im Bootsektor eines Linux-Systems befindet sich der Boot-Loader, z.B. GRUB Wenn auf einem Rechner außer Linux auch Windows installiert ist, wird bei einer Neuinstalltion von Windows der Bootloader überschrieben. Deswegen ist es ratsam den Bootloader (mit der Partitionstabelle) zu sichern.
dd if=/dev/hda of=bs.img bs=512 count=1
Das kann mit dem hd-Befehl überprüft werden
Dann ist die Wiederherstellung des Bootsektors, mit der Knoppix-CD einfacher: es braucht nur der Kopierbefehl umgekehrt werden:
dd if=bs.img of=/dev/hda bs=512 count=1
Achtung: Dabei wird auch die Partitionstabelle überschrieben. Dies kann zu Datenverlusten führen, wenn nach der Sicherung des Bootsektors die Partitionierung geändert wurde. Mit bs=446 bleibt die Partitionstabelle bei i386 erhalten.
Defekte Platte sichern
Dazu sollte man dd nicht verwenden. Wenn dd auf defekte (nicht lesbare) Sektoren trifft, bricht es ab, oder mit der Option conv=noerror werden diese einfach übersprungen. Die Zieldatei ist dann kürzer!
Das Programm dd_rescue schafft hier Abhilfe. Das dd_rhelp Script beschleunigt das Kopieren der gesunden Sektoren.
Fortschrittsanzeige
dd gibt eine Information über bereits kopierte Daten, wenn es das Signal SIGUSR1 (10) bekommt:
root@localhost # kill -USR1 DD-PID
oder
root@localhost # while /bin/true; do sleep 5; kill -USR1 DD-PID; done
DD-PID = Bitte durch die Prozess-ID des dd ersetzen oder pidof verwenden:
root@localhost # while /bin/true; do sleep 5; kill -USR1 `pidof dd`; done
Alternative: wenn "pv" (pipe visual) installiert ist, gibt es eine laufende Anzeige z.B. bei "Image einer Platte erstellen"
dd if=/dev/hda bs=16065b | pv | gzip -1 >/mnt/vielplatz/plattenimage.gz
Siehe auch
DiskettenImage - Dort wird beschrieben, wie komplette Disketten kopiert werden.
IsoImage - Dort wird beschrieben, wie komplette CDs kopiert werden.