Unter Linux kann man mit dem Befehl dd auf einfache Weise Images von ganzen Festplatten oder von einzelnen Partitionnen erstellen. Diese Images kann man danach sogar ganz normal mit dem mount Befehl mounten. Für die Datensicherung von beschädigten Dateisystemen ist das Programm dd_rescue vorgesehen.

dd ist ein Programm für das blockweise Kopieren von Daten. Das heißt die bits werden 1 zu 1 kopiert. Stößt dd auf einen Fehler wird der Kopiervorgang abgebrochen. Dann hilft aber dd_rescue weiter, mit dem ich gute Erfahrungen machen konnte. Es füllt defekte Sektoren mit Null-Bytes und bricht den Kopiervorgang nicht ab. Ich gehe hier aber nur auf dd ein, dd_rescue funktioniert fast genauso. Ein kurzer Blick in die Manpage reicht aus und alles ist klar.

Imagedatei mit DD erstellen

Imagedatei von einer kompletten Festplatte erstellen

dd if=/dev/sda of=/pfad/zum/image.img

Imagedatei von einer Partition erstellen

dd if=/dev/sda1 of=/pfad/zum/image.img

Auslesen der Partitionstabelle

hat man eine komplette Festplatte gesichert, kann man mit z.B. parted die Partitionstabelle auslesen:

parted image.img
unit (Einheit festlegen)
B (festlegen auf Bytes)
print (Partitionstabelle ausgeben)

In der Ausgabe sind unter Anderem die Startposition, die Endposition und die Partitionsgröße pro Partition angegeben. Man kann nun eine bestimmte Partition mounten, indem man diese Informationen verwendet:

mount -o loop,ro,offset=1026398,sizelimit=69853272 image.img /mnt/sicherung

Zum Ermitteln des Partitionsendes wird am besten zur Startposition die Partitionsgröße addiert.

Imagedatei mounten

mount -o loop,ro backup.img /mnt/sicherung

Daten mit DD kopieren

Kopieren einer kompletten Festplatte, inklusive des Master Boot Records (MBR) und Partitionstabellen

dd if=/dev/sda of=/dev/sdb

Die Festplatte sollte allerding gleich groß sein. Ist die Festplatte größer, könnte man nach dieser Operation aus dem restlichen Speicherplatz eine weitere Partition erstellen.

Kopieren des Bootloaders

dd if=/dev/sda of=/dev/sdb bs=446 count=1

Kopiert die ersten 446 Byte von Festplatte sda auf Festplatte sdb.

Kopieren des MBR

dd if=/dev/sda of=/dev/sdb bs=512 count=1

Der MBR ist 512 Bytes groß.