h1Vor Neuinstallationen, größeren Änderungen am System und sonstigen großen Schritten, die man gern rückgängig machen würde, empfiehlt es sich, eine Sicherungskopie des ganzen Systems anzulegen. Dazu bietet sich an, ein Festplattenimage zu erstellen: ein 1:1-Abbild der Partitionen, das sich bei Bedarf zurückspielen lässt, um den vorherigen Zustand wiederherzustellen.

Die Anleitung ist Plattform-unabhängig, d.h. obwohl ein Linux-System zur Sicherung verwendet wird, können auch Windows-Partitionen damit gesichert werden.

Voraussetzung: Live-System

Solche Abbilder sollten niemals im laufenden Betrieb des Rechners erstellt werden, da sich ständig Dateien ändern können und so das Erstellen eines zuverlässigen Abbilds verhindern. Wenn die zu sicherende Partition also nicht aushängbar ist, etwa weil es sich um die System- oder Datenplatte handelt, muss der Vorgang von einer Live-CD (oder -USB) durchgeführt werden.

Ich verwende dafür meist GRML, ein für verschiedene Wartungsvorgänge sehr praktisches Livesystem, das sich sowohl auf CD brennen als auch auf USB-Stick installieren lässt. Der hier beschriebene Vorgang verwendet jedoch nur äußerst grundlegende Techniken und ist daher mit fast allen Linux-Systemen (darunter Installationsmedien) durchführbar.

Nachdem alle Befehle hier mit Systemverwaltung zu tun haben, ist die Anmeldung als root für die Anleitung vorausgesetzt, sudo wird nicht dazugeschrieben.

Herausfinden der Partitionskennungen

Hat man in ein Live-System gebooted, muss man noch die Kennung der jeweiligen Partitionen wissen. In den allermeisten Fällen findet man die Festplatten nach dem folgenden System nummeriert:

sdxy
  • x bezeichnet hier einen Buchstaben, beginnend bei (klein) a für die erste im System eingebaute Platte. Die zweite heißt sdb, etc. Auch USB-Datenträger und ähnliche Laufwerke bekommen so eine Nummerierung.
  • y bezeichnet die Nummer der Partition - von 1 bis 4 findet man die primären Partitionen, startend bei 5 beginnen die logischen. Die MSDOS-kompatible Einteilung von Festplatten lässt nur 4 Partitionen zu, daher wird für gewöhnlich eine dieser Partitionen in einen Container (eine “erweiterte Partition”) umgewandelt, in dem sich weitere (“logische”) Partitionen befinden können.

Eine gültige Partitionskennung lautet daher etwa sda3 für die dritte Partition auf der ersten Festplatte.

Nun muss man wissen, welche Partitionen man sichern möchte. Die Auslagerungspartition etwa muss nicht mitgesichert werden. Dazu lässt man sich am besten die Partitionstabelle anzeigen:

fdisk -l /dev/sda

Man erhält eine Liste der vorhandenen Partitionen, samt Partitionstyp (etwa “Linux”) und die Größe der Festplatte (in Blocks). Das könnten bereits ausreichend Indizien sein, welche Partitionen davon man sichern möchte - für gewöhnlich hat man ja einen Überblick, wie groß die Festplatten sind. Falls man doch auf Nummer Sicher gehen möchte, lassen sich die Partitionen einhängen und die Inhalte einsehen:

mount /dev/sda3 /mnt
ls /mnt
umount /mnt

Damit wird die dritte Partition der ersten Platte in das Verzeichnis /mnt eingehängt, mit dem zweiten Befehl lässt sich also dann der Inhalt betrachten. Der dritte Befehl hängt die Partition wieder aus.

Nicht sichern (oder einhängen) kann man die “erweiterte Partition”, also den oben erklärten Container. Die darin enthaltenen Daten befinden sich allesamt in den logischen Partitionen, die es zu sichern gilt.

Erstellen eines Abbilds

Zum Erstellen des Abbilds wird natürlich ein ausreichend großer Datenträger benötigt, der zur Sicherheit mindestens so groß sein sollte, wie die zu sichernde Partition. Es gibt platzsparendere Methoden, die vorliegende braucht jedoch so viel Platz. Um dennoch nicht 1:1 so viel Platz zu benötigen wie das ausgewählte Laufwerk Kapazität (inklusive freiem Speicher!) hat, wird das Abbild direkt beim Erstellen noch komprimiert. Über die Effizienz davon lassen sich allerdings nur schwierig Vorhersagen treffen.

Zunächst muss der Zieldatenträger eingehängt werden. Wenn es sich dabei etwa um eine USB-Festplatte handelt, lässt sich dessen Partitionsnummer leicht herausfinden: wenn nur eine Festplatte im Gerät verbaut ist (sda), man vom USB-Stick gestartet hat (sdb), wird die externe Platte meist einfach die nächste sein (sdc). Wer hier auf Nummer Sicher gehen möchte, kann mit fdisk -l und dem oben beschriebenen Einhängen der Platte nachsehen.

Stellt sich heraus, dass die externe Platte unter sdc hängt, kann man deren erste Partition wie folgt einhängen:

mount /dev/sdc1 /mnt

Das Image der Partition sda3 etwa kann wie folgt erstellt werden:

dd if=/dev/sda3|gzip > /mnt/sda3.img.gz

Dabei wird mit dem Programm dd von /dev/sda3 gelesen. Statt das Resultat direkt irgendwohin zu schreiben, schicken (“pipen”) wir die Ausgabe mittels des | an das Programm gzip, das den Datenstrom komprimiert wieder ausgibt. Diesen fangen wir ab und leiten ihn mittels des > in die Datei /mnt/sda3.img.gz um.

Diese Schritte wiederholt man mit allen zu sichernden Partitionen, was bei großen Datenmengen eine Weile dauern kann. Der Fortschritt lässt sich abfragen, indem man von einer anderen Konsole (ggf. Alt+F2 drücken) den folgenden Befehl eingibt:

pkill -USR1 -x dd

Auf der ursprünglichen Konsole erhält man eine Fortschrittsanzeige.

Einhängen und öffnen des Image

Möchte man sich vom Erfolg der Arbeit überzeugen oder zu einem späteren Zeitpunkt einzelne Dateien aus dem Image wiederherstellen, lässt sich das so erstellte Image als virtuelles Laufwerk einhängen. Dazu muss es zunächst entpackt werden, wofür auf dem Ziellaufwerk ausreichend Platz vorhanden sein muss:

gunzip /mnt/sda3.img.gz

Man erhält dann eine sda3.img, die das reine 1:1-Abbild der Partition enthält. Dieses kann mittels des “Loop”-Device eingehängt werden:

mkdir /media/loop_sda3
mount -oloop /mnt/sda3.img /media/loop_sda3

Jetzt kann das Verzeichnis /media/loop_sda3 durchsucht werden und Dateien lassen sich herauskopieren.

Zurücksichern des Abbilds

Sollte man in die Notwendigkeit geraten, eine Partition wiederherstellen zu müssen, startet man natürlich wieder die Live-CD, hängt den Datenträger mit dem Backup ein (im Beispiel wieder nach /mnt) und gibt den Befehl ein:

gunzip -c /mnt/sda3.img.gz|dd of=/dev/sda3

Hier passiert das Vorgehen von oben andersherum: gunzip entpackt die Datei und der Schalter -c legt fest, dass die Ausgabe nicht in eine Datei erfolgen soll, damit wir sie mit dem | an dd` weiter-pipen können, das damit die Partition/dev/sda3`` überschreibt. Dabei muss natürlich die selbe Partition gewählt werden oder zumindest eine, die größer ist als die gesicherte!

Alternativen

Sollte man kompliziertere Anliegen haben, etwa Netzwerkserver als Ziel für Backups verwenden möchte oder sonstige Sonderwünsche hat, empfiehlt sich die Verwendung von Partimage, das auf verschiedenen Live-CDs mitgeliefert wird.

Soll es ein auf Backups ausgerichtetes Spezialsystem sein, ist CloneZilla interessant.