Als Backupprogramm verwenden wir in diesem Artikel rsync. Das Kommandozeilentool arbeitet zuverlässig und schnell und ist in allen verbreiteten Linux-Distributionen enthalten. rsync lässt sich mit zahlreichen Schaltern und Optionen für jede Aufgabe anpassen, im Alltag genügen aber einige wenige. Alle Beispiel-Befehlszeilen und Scripts zu diesem Artikel können Sie über www.pcwelt.de/YUthNC herunterladen.
Lese-Tipp: Linux-Top-20 – So finden Sie Ihr Lieblings-Linux
1. Manuelle Sicherung auf externe Festplatte mit rsync
Backups sollten immer auf unabhängige Datenträger erfolgen – etwa auf eine zweite interne Festplatte oder ein USB-Laufwerk. Für ein einfaches manuelles Backup des eigenen Home-Verzeichnisses auf einen USB-Festplatte genügt folgende Kommandozeile:
rsync -avP $HOME /media/$USER/Laufwerks-ID/backup
Die „Laufwerks-ID“ ist die Bezeichnung einer USB-Festplatte, die Linux automatisch unter „/media/$USER“ eingebunden hat. Ändern Sie den Pfad entsprechend Ihrer Systemkonfiguration. „$USER“ ist eine Standardvariable für den Namen des Benutzers, „$HOME“ für den Pfad zum Home-Verzeichnis. Das Ziel „backup“ erstellt rsync automatisch, wenn es noch nicht vorhanden ist.
Der Parameter „-a“ sorgt dafür, dass rsync alle Ordner rekursiv kopiert. Dabei werden Symlinks, Benutzerrechte, Gruppenrechte, Änderungszeiten, Besitzer und Gerätedateien berücksichtigt. „v“ sorgt für eine ausführliche Ausgabe von Meldungen und „P“ für eine Fortschrittsanzeige.
Lese-Tipp: Timeshift: Backups von Systemdateien in Linux anlegen
2. Inkrementelles Backup automatisieren
Eine inkrementelle Sicherung erstellt zuerst ein vollständiges Backup und berücksichtigt danach nur noch die Unterschiede. Ein passendes Backup-Script könnte so aussehen:
#!/bin/sh date=`date “+%Y-%m-%dT%H_%M_%S“` BACKUPDIR=/media/user/Laufwerks-ID/backup rsync -avP –log-file=$HOME/rsync.log –link-dest=$BACKUPDIR/current $HOME $BACKUPDIR/back-$date rm -f $BACKUPDIR/current ln -s back-$date $BACKUPDIR/current
Speichern Sie die Zeilen beispielsweise in der Datei „backup.sh“, die Sie dann mit folgendem Befehl ausführbar machen:
chmod 755 backup.sh
Passen Sie den Pfad hinter „BACKUPDIR“ entsprechend Ihrer Systemkonfiguration an. Starten Sie dann folgendermaßen das Script:
./backup.sh

Das Script erstellt bei jedem Aufruf ein Backup Ihres Home-Verzeichnisses. Jeder Backupordner trägt als Bezeichnung das aktuelle Datum und die Uhrzeit. Anschließend erzeugt das Script mit „ln -s“ einen symbolischen Link mit dem Namen „current“ auf das eben erstellte Backupverzeichnis. Es dient beim nächsten Aufruf als Quelle für Hard-Links im neuen Backupordner. Die Hard-Links verweisen auf die Dateien aus dem zuerst erstellen Backupordner, benötigen aber selbst keinen Speicherplatz.
Sie können nach einiger Zeit ältere Backupordner löschen. Nur der zuletzt erstellte Ordner muss immer erhalten bleiben. Das Dateisystem verwaltet die Verknüpfungen automatisch.
Die letzten verbliebenen Hard-Links aus dem Backup sind dann die einzigen Kopien der ursprünglichen Originaldateien.
Backup nach Zeitplan: Für ein automatisches Backup erstellen Sie einen Cronjob mit gnome-schedule (siehe dazu „Autostarts und Cronjobs“ auf Seite 22. Hinter „Befehl“ tippen Sie den Pfad zum Backupscript ein, beispielsweise „/home/user/backup.sh“.
Lese-Tipp: So richten Sie sich den Raspberry Pi als Backupserver ein
3. Backupscript mit mehr Funktionen
Das bisherige Script genügt zwar für das Backup der persönlichen Daten, meist werden Sie aber noch weitere Verzeichnisse sichern oder bestimmte Verzeichnisse ausschließen wollen. Wünschenswert ist außerdem eine Backupstruktur, die in Tagen, Wochen und Monaten organisiert ist.
Ein Beispiel für diese Aufgaben laden Sie über www.pcwelt.de/YUthNC herunter. Entpacken Sie das Archiv zuerst in Ihr Home-Verzeichnis und machen Sie das Script ausführbar:
chmod 755 backup_ex.sh
Öffnen Sie die Datei „local-data.include“ in einem Editor. Sie enthält Beispieldefinitionen für die Ordner, die in das Backup aufgenommen werden sollen. „+ /etc/“ schließt den Ordner „/etc“ ein und „-.cache“ klammert Ordner mit dieser Bezeichnung aus. Soll nur ein bestimmtes Unterverzeichnis gesichert werden, muss zuerst der darüber liegende Ordner eingeschlossen werden, beispielsweise:
+ /var/ + /var/www/ -/var/*
rsync sichert dann „/var/www,“ berücksichtigt durch „-/var/*“ jedoch keine weiteren Ordner unterhalb von „/var“. Die letzte Zeile „-/*“ schließt alle Ordner und Dateien aus außer den zuvor angegebenen. Für die Sicherung auf eine externe Festplatte verwenden Sie dann diese Befehlszeile:
sudo ./backup_ex.sh "local-data" "" "/" "/media/user/ID/backup/"

Der erste Parameter ist die Bezeichnung des Backups. Diese muss identisch mit dem Namen der verwendeten „include“-Datei sein. Danach folgt die Backup-Quelle „/“, also das Wurzelverzeichnis. Sie können hier auch einen anderen Pfad angeben, beispielsweise „/home“, wenn Sie nur die Home-Verzeichnisse sichern wollen. Die Angaben in „local-data.include“ müssen Sie dann aber dafür anpassen. Der letzte Parameter bestimmt das Zielverzeichnis. Passen Sie diesen für Ihr System an. Zur Automatisierung erstellen Sie einen Cronjob für das Script „backup_ex.sh“, wie in -> Punkt 2 beschrieben. Da das Script mit root-Rechten laufen muss, rufen Sie sudo crontab -e oder sudo gnome-schedule im Terminal auf.
4. Backup mit rsync auf einem Server speichern
rsync kann Backups per SSH auch über das Netzwerk auf einen anderen Linux-PC übertragen. Damit sich das Backup per Cronjob automatisieren lässt, muss die Anmeldung ohne Passwort erfolgen. Installieren Sie zuerst das Paket „openssh-server“ auf jedem PC. Den Schlüssel erzeugen Sie als nicht privilegierter Benutzer (nicht als root) mit ssh-keygen -t rsa auf dem Server. Speichern Sie ihn mit folgenden zwei Befehlszeilen:
eval “$(ssh-agent -s)” ssh-add
Mit dem Befehl
ssh-copy-id -i ~/.ssh/id_rsa.pub user@client-pc
übertragen Sie den Schlüssel auf alle Client-PCs, die Sie sichern wollen. Auf diesen müssen Sie außerdem den Befehl sudo visudo aufrufen und folgende Zeile eintragen:
user ALL=NOPASSWD:/usr/bin/rsync
Damit erlauben Sie dem Benutzer „user“ die Verwendung von sudo rsync ohne Passwort.
Passen Sie die Datei „remote-data.include an“, wie in -> Punkt 3 beschrieben. Danach starten Sie das Backupscript auf dem Server mit diesem Befehl:
sudo ./backup_ex.sh "remote-data" "192.168.1.142" "/" "/Ziel-Ver zeichnis/" "ssh -i /home/user/.ssh/id_rsa -l user"
Verwenden Sie die IP-Adresse oder den Namen des zu sichernden Client-PCs, und passen Sie „Ziel-Verzeichnis“ für die Konfiguration auf dem Server an.„user“ ersetzen Sie jeweils durch den Anmeldenamen. Der SSH-Schlüssel muss sich unter dem Namen „id_rsa“ im angegebenen Ordner befinden. Wenn alles funktioniert, richten Sie einen Cronjob auf dem Server ein.














