Ein Backup der persönlichen Daten im Home-Verzeichnis sollte für jeden Anwender zum Pflichtprogramm gehören. Doch auch das System kann man für den Fall der Fälle sichern.
Ein Backup der im Home-Verzeichnis gespeicherten Daten zu erstellen, fällt leicht: Im Prinzip genügt es, die relevanten Dateien auf einen zweiten Datenträger zu kopieren. Ein Backup der Root-Partition, also des Linux-Systems selbst, erfordert hingegen wesentlich mehr Aufwand: Hier spielen Feinheiten wie Extended Attributes [1] des Dateisystems eine Rolle.
Doch ein solches System-Backup funktioniert unter Linux zuverlässig. Wenn Sie eine exakte Kopie der Systempartition auf eine neue Festplatte spielen und den Bootloader (etwa Grub) korrekt einrichten, dann bootet das System wieder wie vorher. Es gibt unter Linux keine undokumentierten Fallstricke oder gar Features wie die Windows-Software-Aktivierung, die auf neuer Hardware ihre Gültigkeit verlieren könnten.
Selbst dem Klonen einer bestehenden Installation auf einen anderen Computer steht nichts im Weg: Linux scannt die Hardware beim Booten jedes Mal neu und lädt die nötigen Kernel-Module. Lediglich um die Datei /etc/fstab, in der die beim Booten aktivierten Festplattenpartitionen stehen [2], um Grafikkartentreiber oder um manuelle Anpassungen im Verzeichnis /etc/udev müssen Sie sich gegebenenfalls noch kümmern.
Es gibt zwei Spielarten des System-Backups: das Sichern aus dem laufenden System, für das hier Rsync [3] zum Einsatz kommt, und den klassischen Ansatz, bei dem Sie aus einem Live-System heraus eine Image-Datei des nicht gemounteten Roots erstellen. Dafür eignet sich das freie Tool Partclone hervorragend (Abbildung 1).

Abbildung 1: Mit der Installation von Partclone verwandeln Sie ein herkömmliches Ubuntu-Live-System in eine perfekte Plattform zum Sichern oder Klonen eines Linux-Systems.
Jedes Live-System einer gängigen Distribution und auch das mit der Option Rescue System gestartete Rettungssystem auf der OpenSuse-Installations-DVD eignen sich dafür. Partclone ist zwar in der Regel nicht vorinstalliert, doch in den Repositories verfügbar und lässt sich (zumindest bei bestehender Internet-Verbindung) leicht ins Live-System nachinstallieren (Listing 1). Möchten Sie die Festplatte vor dem Wiedereinspielen partitionieren, installieren Sie auch noch GParted.
Listing 1
$ sudo add-apt-repository universe $ sudo apt install partclone
Aus eigener Kraft
Dieser Aufwand bleibt Ihnen erspart, wenn Sie den Rsync-Ansatz aus dem laufenden System heraus wählen. Das Verfahren birgt allerdings den Nachteil, dass Rsync keine konsistenten Systemzustände garantieren kann: Das Tool arbeitet einfach eine zu Beginn erstellte Liste ab. Sollte gerade zum Zeitpunkt des Kopierens ein Systemdienst ins Verzeichnis /var/lib schreiben, besteht die Möglichkeit, dass Datenmüll ins Backup gelangt.
Auch wenn dieser Fall in der Praxis eher selten auftritt, sollten Sie ihn doch ausschließen, indem Sie mit der Eingabe von systemctl isolate rescue.target in den Rescue-Modus wechseln, was bei jeder modernen Distribution mit Systemd funktionieren sollte. Nach Drücken der Eingabetaste landen Sie auf einer Textkonsole, die zum Absetzen des für das Backup erforderlichen Rsync-Befehls jedoch ausreicht (Abbildung 2).

Abbildung 2: Im Rescue-Modus von Linux sehen Sie nur noch eine einzige Textkonsole. Systemdienste, die durch Schreibzugriffe während des Backups Probleme verursachen könnten, sind stillgelegt. Nach Eingabe von reboot startet das System wieder normal.
Im Rescue-Modus laufen Systemdienste wie Datenbanken oder Webserver nicht. Allerdings kappt der Rescue-Modus auch die Netzwerkverbindung, die Sie brauchen, um Ihr Backup auf einen anderen Rechner zu überspielen. Die Eingabe von systemctl start NetworkManager stellt zumindest kabelgebundene Verbindungen wieder her. OpenSuse installiert auf Desktop-PCs statt des NetworkManagers Wicked [4]; der äquivalente Befehl lautet hier systemctl start wicked.
Da ein defektes Netzteil im schlimmsten Fall sämtliche Hardware eines Computers außer Gefecht setzt, empfiehlt sich der Einsatz eines zweiten Rechners als via Netzwerk adressiertes Backup-Ziel. Alternativ schließen Sie eine externe USB-Festplatte oder einen ausreichend dimensionierten USB-Speicherstick für das Backup an.
Sorgen Sie nun dafür, dass das Zielverzeichnis für das Backup erreichbar ist, indem Sie zum Beispiel die externe Festplatte mounten (Kasten “Backup-Ziel mounten”) – das erfolgt in der Rescue-Umgebung nicht wie unter KDE oder Gnome automatisch. Legen Sie für das Backup ein eindeutig benanntes Verzeichnis an, denn Rsync legt die Daten direkt im angegebenen Zielordner ab.
Überspielen Sie regelmäßig Backups auf einen zweiten Rechner, sollten Sie dort den Rsync-Daemon einrichten (Kasten “Rsync-Daemon”): Er sorgt für eine wesentlich bessere Performance als beim Einhängen eines entfernten Verzeichnisses per NFS oder Samba.
Backup-Ziel mounten
Das Kommando aus der ersten Zeile von Listing 2 macht die erste Partition (sdb1) des zweiten Speichergeräts (sdb) im Computer unter dem /mnt/Verzeichnis verfügbar. Die Ausgabe des Kommandos lsblk oder das grafische Werkzeug GParted helfen beim Finden des richtigen Device-Files. Linux-typische NFS-Freigaben (serverseitig in der Datei /etc/exports freigegeben [5]) mounten Sie als Root wie in der zweiten Zeile gezeigt: Auf die IP des Servers folgt nach einem Doppelpunkt das freigegebene Verzeichnis und ein Ordner auf dem lokalen Rechner als Einhängepunkt.
Listing 2
# mount /dev/sdb1 /mnt/Verzeichnis # mount Server-IP:/Freigabe /mnt/Verzeichnis<C>
Rsync-Daemon
Der Rsync-Daemon stellt bestimmte Verzeichnisse zur Synchronisation mit einem anderen Rechner im Netzwerk zur Verfügung. Diese Shares tragen Sie in der Datei /etc/rsyncd.conf in der in Listing 3 gezeigten Form ein. In den eckigen Klammern steht der Name der Freigabe. Mit dieser synchronisieren Sie das Root-Verzeichnis über den Aufruf aus Listing 4: Nach der Angabe für das Rsync-Protokoll steht die IP-Adresse des Servers, auf einen Doppelpunkt folgt anschließend der Share-Name. Die Optionen für ein Root-Backup verändern sich im Vergleich zum lokalen Rsync nicht.
Listing 3
[backup] path = /data/backup read only = no
Listing 4
# rsync Optionen / rsync://root@Server-IP:Share
Exakte Kopie
Befindet sich der Rechner im Rescue-Modus und steht ausreichend Plattenplatz für das Backup bereit, dann brauchen Sie nur noch als Root den eigentlichen Rsync-Befehl (Listing 5) abzusetzen (Abbildung 3). Er synchronisiert das Root-Verzeichnis (erster Parameter / nach der exclude-Liste) mit dem Backup-Ordner.
Listing 5
# rsync -aAX --info=progress2 --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/home/*","/mnt/*","/media/*","/lost+found"} / /Ziel/Backup-Ordner

Abbildung 3: Dank der Option --info=progress2 zeigt Rsync während des Backups zumindest einen ungefähren Fortschrittsprozentwert, auch wenn er nicht immer gleichmäßig weiterläuft und manchmal sogar zurückspringt.
Die Optionsfolge -aAX schaltet Rsync in den sogenannten Archive-Modus, der den ursprünglichen Dateieigentümer sowie Zugriffsrechte und Zeitstempel erhält. A kopiert die über die klassischen Unix-Zugriffsrechte hinausgehenden ACLs [6], X erhält die schon erwähnten Extended Attributes.
Der Schalter --delete löscht die im Root-Verzeichnis nicht mehr vorhandenen Dateien im Backup (was erst greift, wenn Sie mehrfach dasselbe Backup-Verzeichnis benutzen). Dann benötigt die Sicherung wesentlich weniger Zeit. Die letzten beiden Parameter benennen das Quellverzeichnis (das Wurzelverzeichnis / des Dateisystems) sowie das Zielverzeichnis des Backups.
Die Liste hinter --exclude schließt Pseudo-Verzeichnisse wie /dev aus, die Linux dynamisch erzeugt, und weitere Ordner, die nichts in einem Backup verloren haben. Der gezeigte Aufruf ignoriert auch die Home-Verzeichnisse der Benutzer: Diese Daten sollten Sie gesondert (und häufiger) sichern. Rsync erhält, anders als ein normaler Cp-Befehl, die erweiterten Attribute der Dateien. Darum, und weil es aus früheren Backups schon existierende Dateien nicht erneut kopiert, ist es das richtige Tool für Root-Backups.
Um ein Backup zurückzuspielen, vertauschen Sie im Rsync-Aufruf lediglich Ziel und Quelle, also die letzten beiden Parameter. Lässt sich das System booten und nehmen Sie das Restore aus dem laufenden System heraus vor, dann sollten Sie wie beim Erstellen des Backups zuvor in den Rescue-Modus wechseln.
Bare Metal
Das mit Rsync erstellte Backup taugt aber auch zum Wiederherstellen eines nicht mehr bootenden Systems: Starten Sie dazu die Live-Disk einer beliebigen Linux-Distribution, mounten Sie das zu restaurierende Root in ein Verzeichnis, und nennen es Rsync mit dem letzten Parameter als Restore-Ziel.
Spielen Sie das Backup auf eine neue Platte oder sogar einen anderen Rechner zurück, dann müssen Sie vorher die Platte(n) partitionieren. Entweder teilen Sie sie so auf, dass die wiederhergestellte Datei /etc/fstab zu den neu erstellten Partitionen passt, oder Sie öffnen die Fstab in einem Editor und passen sie den neuen Gegebenheiten an. Einer der großen Vorzüge des Backups mit Rsync: Partitionsaufteilung und Dateisystemtyp müssen nicht mit dem ursprünglichen Layout übereinstimmen, solange für das Zurückspielen genug Platz bereitsteht.
Auf einer neuen Festplatte oder SSD müssen Sie außerdem den Bootloader (in der Regel Grub) wieder installieren [7]. Ein Problem, das sich mit den im Internet zu findenden oft älteren Anleitungen nicht immer lösen lässt, stellt die Grub-Installation auf einer unvorbereiteten Festplatte mit einer Größe von über 2 GByte dar.
Der BIOS-Kompatibilitätsmodus (CSM) neuerer UEFI-Rechner erfordert dazu eine 1 bis 2 MByte große Partition, die die Markierung bios_grub (Rechtsklick auf die Partition, Manage Flags | Markierungen bearbeiten) trägt (Abbildung 4). Im UEFI-Modus ist dagegen eine rund 250 MByte große FAT32-Partition vonnöten. Ein sehr umfangreicher Artikel zu Grub im englischsprachigen Arch-Wiki [8] spielt alle diese Varianten durch.

Abbildung 4: Auf nach dem GPT-Standard partitionierten Platten braucht Grub eine spezielle kleine Partition, die sich mit GParted einfach anlegen lässt.
Hilfssystem
Wie beim Restore eines nicht mehr startenden Systems starten Sie für das Erstellen eines Root-Snapshots ein Live-System: Partclone funktioniert grundsätzlich nur mit nicht gemounteten Dateisystemen, und das Root-Dateisystem lässt sich im laufenden Betrieb nicht aushängen. Nach dem Booten des Live-Systems brauchen Sie nur noch Partclone zu installieren (Abbildung 1) und das Tool mit den passenden Parametern auf der Konsole aufzurufen.
Auch wenn es etwas mehr Aufwand bedeutet, bevorzugen Experten das Backup eines Linux-Systems aus einer externen Umgebung heraus gegenüber jenem aus dem laufenden System: Die Systempartition ist in diesem Fall nicht aktiv, was korrumpierende Schreibzugriffe ausschließt. Partclone prüft außerdem vor der Image-Erstellung das Dateisystem, was ebenfalls nur in ausgehängtem Zustand funktioniert.
Ähnlich wie das bekanntere und ältere Dd greift Partclone unterhalb der Dateisystemebene auf die physikalischen Sektoren der Platte zu. Als Quellpfad erwartet es daher keinen Dateisystempfad wie / sondern ein Unix-Device-File aus dem /dev-Verzeichnis. Am einfachsten finden Sie das passende Device während des laufenden Systems heraus, also vor dem Booten des Live-Mediums, indem Sie auf der Konsole findmnt / eingeben.
Die zweite Spalte des ausgegebenen Texts (Listing 6) nennt das zum Root-Dateisystem gehörige Device-File /dev/sda1, die dritte den Dateisystemtyp ext4, den Sie ebenfalls benötigen. Befinden Sie sich bereits im Live-System, dann installieren und starten Sie GParted (Abbildung 4) oder führen als Root auf der Konsole fdisk -l aus. Beide Programme listen die Partitionen aller Festplatten.
Listing 6
TARGET SOURCE FSTYPE OPTIONS / /dev/sda1 ext4 rw,relatime,errors=remount-ro
Haben Sie während der Installation des Systems die Vorgaben der Installationsroutine übernommen, dann handelt es sich bei der Root-Partition in der Regel um die erste Partition, abgesehen von einer eventuell für Grub angelegten. Im Zweifelsfall hängen Sie die Partition als Root mit mount /dev/sda1 /mnt ein und prüfen mit ls /mnt, ob sich für die Systempartition typische Ordner finden, wie etwa /usr oder /dev/. In den Root-Account des Live-Systems wechseln Sie durch Eingabe des Kommandos su ohne Passwort.
Bei Partclone geht dem eigentlichen Backup der Daten ein Check auf Dateisystemebene voraus, der unbelegte Blöcke ausfiltert, während Dd blind jeden Block in das Image schreibt. Mit Dd erstellte Images fallen daher so groß aus wie das gesamte Dateisystem, während die Größe von mit Partclone erstellten Sicherungen nur den belegten Platz widerspiegelt. Das spart beim Backup und der Wiederherstellung Speicherplatz und Zeit.
Ein Äquivalent zum Rsync-Daemon gibt es bei Partclone nicht; das Zieldateisystem für die Backup-Daten muss lokal verfügbar sein. Als einfachste Option bietet sich auch hier wieder der Einsatz einer externen Festplatte an. Alternativ mounten Sie zum Ablegen des Backup-Images die Home-Partition, jede beliebige Festplattenpartition außer der Root-Partition, oder ein per NFS freigegebenes Dateisystem (vergleiche Kasten “Backup-Ziel mounten”).
Kompakt verpackt
Mit den Angaben für das Device-File und den Dateisystemtyp der Root-Partition rufen Sie nun Partclone als Root auf, im Beispiel aus Listing 7 für ein Ext4-Dateisystem. Das Partclone-Paket enthält gesonderte Binaries für die gängigen Dateisysteme wie partclone.btrfs oder partclone.xfs, die alle identische Parameter erwarten. Die Angabe /dev/sda1 nach dem Parameter -s für die Quelle ersetzen Sie durch das Device-File der in Ihrem System vorhandenen Root-Partition.
Listing 7
# partclone.ext4 -cN -s /dev/sda1 -o /Ziel/Image.img
Die Option -c wie “clone” legt die Daten der gesicherten Partition in einer einzigen Image-Datei ab, statt sie wie Rsync eins zu eins zu kopieren. Die Option N schaltet die übersichtliche Ncurses-Oberfläche von Partclone ein (Abbildung 5). Auf -o (“output”) folgt der Zielpfad für das Backup-Image.

Abbildung 5: Das Sichern einer Kubuntu-Standard-Installation dauert nur wenige Minuten. Diese Zeit sollten Sie sich regelmäßig nehmen, um gegen Datenverluste in der Systempartition gewappnet zu sein.
Nach dem Backup verschwindet die farbige Ncurses-Oberfläche von Partclone. Auf der Konsole verbleibt die Meldung Cloned successfully, sofern alles geklappt hat. Wie Abbildung 5 zeigt, dauert das Ziehen einer Image-Datei von der 8,7 GByte großen Root-Partition einer Kubuntu-Standard-Installation nur wenige Minuten. Bei größeren Root-Dateisystemen benötigt allerdings die erste Phase, in der Partclone belegte und freie Festplattenblöcke voneinander trennt, einige Zeit. Partclone hängt während dieser Zeit scheinbar bei der Meldung Calculating Bitmap – lassen Sie dem Programm ein wenig Zeit für seine Arbeit.
Zum Wiederherstellen des Backups im Live-System führen Sie als Root den Befehl aus Listing 8 aus. Wie zuvor müssen Sie hier gegebenenfalls statt partclone.ext4 wieder die zum Dateisystem passenden Variante wählen. Die Option -r stellt eine Partition aus einer Image-Datei wieder her. Als Quelle (“source”, -s) dient hier die vorher gezogene Image-Datei, als Output (-o) das Device-File des Root-Dateisystems, das Sie schon für das Backup ermittelt hatten.
Listing 8
# partclone.ext4 -rN -s /Quelle/Image.img -o /dev/sda1<C>
Partclone verhält sich beim Wiederherstellen weniger flexibel als Rsync: Das zurückgespielte Dateisystem erhält stets dieselbe Größe und denselben Dateisystemtyp wie der Ausgangszustand. Sie können das Backup also nicht in eine kleinere Partition zurückspielen, selbst wenn in der gesicherten Partition viel Speicherplatz frei war. Allerdings funktioniert es problemlos, das Backup in eine größere Partition zurückzuschreiben und das Dateisystem nachträglich auf die Partitionsgröße auszudehnen.
Für Ext4 erledigt das am ausgehängten Dateisystem der Aufruf aus der ersten Zeile von Listing 9. Btrfs- und XFS-Dateisysteme hängen Sie vorher ein (Zeile 2) und vergrößern sie dann mit dem jeweils für das Dateisystem passenden Kommando (letzte beiden Zeilen). Haben Sie lediglich die Root-Partition wiederhergestellt, dann brauchen Sie sich um den Bootloader Grub nicht weiter zu kümmern. Nach einem Festplattentausch müssen Sie das neue Laufwerk genauso vorbereiten wie schon beim Backup mit Rsync. Nach dem Restore gilt es dann, auch Grub erneut einzurichten.
Listing 9
# resize2fs /dev/sdaX # mount /dev/sdaX /mnt # btrfs filesystem resize max /mnt # xfs_growfs /mnt
Fazit und Ausblick
Ein System-Backup versetzt Sie in die Lage, schnell wieder weiterzuarbeiten, selbst wenn das Root-Dateisystem beschädigt wurde – egal, ob durch einen unbedachten Rm-Befehl, wegen eines Plattenausfalls oder eines misslungenen Upgrades. Aus dem laufenden System heraus gelingt das mit Rsync erstaunlich einfach. Den sperrigen Aufruf des Tools verpacken Sie am besten in ein Skript.
Benutzen Sie ein Live-Medium als Backup-Plattform für Partclone, dann müssen Sie den Konsolenbefehl jedes Mal neu tippen: Ein Live-System startet als Tabula Rasa. Alternativ installieren Sie daher ein kleines Rettungssystem auf Ihrem Rechner, zum Beispiel auf Basis der Server-Ausgabe von Ubuntu [9] oder eines OpenSuse-Systems mit der Installationsoption Server. Da Sie dieses System gerade dann brauchen, wenn die Festplatte oder SSD mit der normalen Linux-Installation ausfällt, richten Sie es am besten auf einem anderen Speichermedium ein: Eine externe Festplatte bietet dafür bei heutigen Plattengrößen ausreichend Platz.
Infos
-
Extended Attributes: http://man7.org/linux/man-pages/man7/xattr.7.html
-
Rsync: https://rsync.samba.org
-
NFS-Server: http://nfs.sourceforge.net/nfs-howto/ar01s03.html
-
ACLs: https://wiki.archlinux.org/index.php/Access_Control_Lists
-
Grub reparieren: https://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd
-
Detaillierte Anleitung zu Grub: https://wiki.archlinux.org/index.phGpRUB
-
Ubuntu Server: https://www.ubuntu.com/download/server





