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ß.