dd kopiert Daten blockweise ("dump device")

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

dd (zuletzt geändert am 2020-08-15 18:21:44 durch ThomasWaldmann)