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