Linux – Partition mit ddrescue als Image sichern, mounten und retten

Hinweis: Hier wird auf das Tool ddrescue eingangen. Es existiert auch ein ähnlich klingendes Tool dd_rescue mit fast identischem Zweck. Jedoch sollte dd_rescue nicht mehr verwendet werden, weil das Tool veraltet ist. Zudem ist ddrescue eine komplette Neuprogrammierung. Ausserdem ist es auf Geschwindigkeit und geringere Fehleranfälligkeit beim Auslesen der Festplatte, einer Partition oder einer Datei optimiert.

Noch ein Hinweis für openSUSE 11.2 Nutzer:
In der aktuellen openSUSE 11.2 nennt sich das Package ddrescue, beinhaltet jedoch das veraltete Tool dd_rescue. Diese Package sollte in naher Zukunft ausgetauscht werden. Aus diesem Anlass empfehle ich das Package ddrescue direkt über mein Repo zu beziehen und zu installieren. http://download.opensuse.org/repositories/home:/Freespacer:/ddrescue/

Nun kommen wir zu unserem Thema Partitionssicherung. Für diesen Zweck verwende ich das Tool ddrescue. Es erstellt von einer Partition bzw. auch von einer Datei eine 1:1-Kopie. Das Tool hat auch ein nennenswerten Vorteil: Bei einem Lesefehler bricht es nicht ab, sondern macht einfach weiter. Hier hat das ältere dd_rescue das Nachsehen und quittiert hierbei seinen Dienst.

Um eine Partition z.B. /dev/sda3 in ein Image z.B. /home/benutzer/sicherung.img zu sichern, geben wir ihm folgenden Befehl:

# ddrescue [options] inputfile outputfile [logfile]
ddrescue /dev/sda3 /home/benutzer/sicherung.img

Jetzt können wir das Image ohne Probleme mounten. Es verhält sich so, als ob es eine echte Partition wäre. Man muss jetzt noch wissen, welches Dateisystem das Image hat. Und lässt sich mit folgendem Befehl schnell ermitteln:

# file [FILE...]
file /home/benutzer/sicherung.img

Als Ausgabe habe ich beispielsweise:

sicherung.img: Linux rev 1.0 ext3 filesystem data (large files)

Hier erkennen wir, dass es sich um ein ext3-Dateisystem handelt und geben die Option -t ext3 mit. Falls es abweichen sollte, bitte anpassen. Man kann diese Option auch weglassen. Jedoch muss man damit rechnen, dass das Einhängen des Images evtl. fehlschlagen wird, weil er das Dateisystem nicht kennt.

Nun können wir das Image mit der Option -r als schreibgeschützt mounten. Man kann auch dieses Image ohne Schreibschutz mounten. Dann wäre es aber eine sehr schlecht Kopie und könnte evtl. ein bereits defektes Dateisystem noch mehr kaputt machen. ;-) Da sich die Daten zwangsläufig verändern können. :-)

Zum Schluß haben wir noch eine Option -o loop und weisen damit dem mount-Befehl an, dass die lokale Image-Datei als Loop-Device ins derzeitige Dateisystem einbinden soll.

# Verzeichnis erstellen, in der wir das Image mounten wollen
mkdir -p /mnt/sicherung

# Image nur lesend mounten.
mount -r -t ext3 -o loop /home/benutzer/sicherung.img /mnt/sicherung

Um das Image wieder auszuhängen, genügt folgender Befehl:

umount /mnt/sicherung

Wenn die echte Partition wie auch das Image einen Fehler im Dateisystem hat, kann man auch auf diesem Wege sehen, wie der Fehler im Image behoben wird und ob er überhaupt behoben werden kann. Das Diagnose-Tool für das Dateisystem nennt sich hier fsck und wird wie folgt aufgerufen (hier ext3, sonst bitte anpassen):

fsck.ext3 -f /home/benutzer/sicherung.img

Als Ausgabe könnte es in etwa aussehen:

e2fsck 1.41.9 (22-Aug-2009)
Durchgang 1: Prüfe Inodes, Blocks, und Größen
Durchgang 2: Prüfe Verzeichnis Struktur
Durchgang 3: Prüfe Verzeichnis Verknüpfungen
Durchgang 4: Überprüfe die Referenzzähler
Durchgang 5: Überprüfe Gruppe Zusammenfassung
sicherung.img: 700882/6561792 Dateien (3.0% nicht zusammenhängend), 17256532/26216064 Blöcke

Falls man die echte Partition total zerschossen und die Partitionstabelle bzw. die Superblocks teilweise zerstört hat. So kann man mit dem Tool TestDisk versuchen, diese Superblocks auf dem Image wiederherzustellen. Hier wird die original Partition gar nicht angefasst. Ob danach der Fehler behoben ist, kann man leider nicht garantieren, aber ein Versuch ist es Wert:

testdisk /home/benutzer/sicherung.img

Für openSUSE 11.2 Nutzer können TestDisk bequem über zypper installieren:

zypper in photorec

TestDisk startet und blendet das Image und dessen Größe ein. Hier gehen wir mit der Enter-Taste auf „Proceed“ und machen mit diesem Image weiter. Im nächsten Menü wählen wir mit den Pfeiltasten den Eintrag „Intel“ aus. Und zum Abschluß wählen wir dann das Menüpunkt „Analyse“ und lassen das Image nun analysieren.

Sobald TestDisk durchgelaufen ist und vielleicht ein paar Superblocks wiederhergestellt hat, kann man das Image nochmal mit fsck drüberlaufen lassen. Zum Schluß kann man das Image mounten und das Ergebnis begutachten.

Viel Glück und Erfolg. ;-)