Backup/Datenrettung mit dd und dd_rescue – so gehts

Manchmal möchte man ein 100%iges Backup einer Festplatte anlegen, ein anderes mal Daten einer beschädigten Festplatte retten. Unter linux hilft hier dd und ddrescue bzw. dd_rescue. Hier zeige ich wie es geht…

dd-image einer einzelnen Partition anlegen geht so:
dd if=/dev/hda1 of=/home/user/dd_partitions_datei.img

dd image einer partition mounten:
mount -o loop /imagedatei /mountziel

Bei einer beschädigten Festplatte möchte man evtl Daten retten. dd würde warscheinlich abbrechen, oder nie wiederkommen.
Hier hilft dd_recue bzw. ddrescue. Einige Distributionen haben dieses Tool schon von Hause aus vorinstalliert, bei anderen muss man nachhelfen.
Bei debian/ubuntu über die Softwareverwaltung oder per Terminalbefehl nachinstallieren:

sudo apt-get update
sudo apt-get install ddrescue (bzw. dd_rescue)

Es empfiehlt sich dann die Hardware der defekten Platte nur noch dieses eine mal zu beanspruchen, und man liest die Ganze platte mit alle evtl. vorhandenen Partitionen in einem Stück aus. dd_rescue hat eine ähnliche Syntax wie dd (nur inputfile,outputfile „if=“,“of=“ fallen weg, und man kann vom Rettungsvorgang mehr sehen „-v“):

dd-image einer kompletten Festplatte anlegen geht dann so:
ddrescue -v /dev/hda /home/user/dd_ganze_hdd_datei.img  (bzw. dd_rescue)

einzelne partition aus dem dd image einer ganzen Festplatte mounten:

fdisk -l -u dd_imagefile

Dies führt bei mir zu folgender ausgabe:
root@solaris:/home/munsch# fdisk -l -u /media/RAID/_Filebase_backup/markus_backup/markus_hdd_dd.img
Sie müssen angeben Zylinder.
Sie können dies im Zusatzfunktionsmenü tun.

Platte /media/RAID/_Filebase_backup/markus_backup/markus_hdd_dd.img: 0 MByte, 0 Byte
255 Köpfe, 63 Sektoren/Spur, 0 Zylinder, zusammen 0 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb8f0ffa4

Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/media/RAID/_Filebase_backup/markus_backup/markus_hdd_dd.img1              63 10233404     5116671   12  Compaq Diagnostics
/media/RAID/_Filebase_backup/markus_backup/markus_hdd_dd.img2   *    10233405 63215774    26491185    7  HPFS/NTFS
Partition 2 hat unterschiedliche phys./log. Enden:
phys=(1023, 254, 63) logisch=(3934, 254, 63)
/media/RAID/_Filebase_backup/markus_backup/markus_hdd_dd.img3        63215775 117210239    26997232+   7  HPFS/NTFS
Partition 3 hat unterschiedliche phys./log. Anfänge (nicht-Linux?):
phys=(1023, 0, 1) logisch=(3935, 0, 1)
Partition 3 hat unterschiedliche phys./log. Enden:
phys=(1023, 254, 63) logisch=(7295, 254, 63)

fdisk zeigt die Partitionen in dem Imagefile nun an. Auch den Partitionsanfang (Unit bei mir 63) und Sektorgröße (bei mir jetzt 512 Byte), diese notieren.
Nun die Offsetposition der Partition errechnen:
Unit*Sektorgröße (bei mir 63*512=5239503360)

Nun ein Loopdevice anlegen:
losetup -o 1234 /dev/loop0 imagefile (1234 durch das korrekte Offset ersetzen.)

bei mir:
root@solaris:/home/munsch# losetup -o 5239503360 /dev/loop0 /media/RAID/_Filebase_backup/markus_backup/markus_hdd_dd.img

Und nun diese partition mounten:
mount /dev/loop0 /mountpoint (wenn mount fehlschlägt, war das Offset falsch 😉
bei mir:
root@solaris:/home/munsch# mount /dev/loop0 /mnt/test3

Nach dem umount (oder bei fehlgeschlagenem mount) gibst Du das
loop-device wieder frei:
losetup -d /dev/loop0

Ich hoffe Ihr habt eure Daten jetzt wieder 😉

SandUhrGucker

Dieser Beitrag wurde unter Allgemein, Howtoś Tutorials abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.