Ich werde hier zeigen, wie man automatische Backups für einen Server, eine Workstation oder auch einen Linux-PC zu Hause konfigurieren kann.
Wichtig!
rsnapshot erstellt nicht jedes Mal ein Komplett-Backup, sondern legt sogen. inkrementelle Backups an.
Dabei verwendet rsnapshot "hard links". Das spart Speicherplatz und schont die Ressourcen.
Es werden Archiv-Verzeichnisse angelegt (z.B. weekly.0, weekly.1, etc.), die im vorgegebenen Rhythmus rotieren.
Die nötigen Pakete installiert man auf Debian mit: apt-get install rsync rsnapshot
Auf Gentoo-Systemen z.B. läßt sich das Paket mit emerge -av rsnapshot installieren.
Nachdem rsnapshot installiert ist, geht es darum die Konfigurationsdatei zu bearbeiten: /etc/rsnapshot.conf
###############################
# rsnapshot.conf
###############################
# Alle Backups werden unterhalb von diesem Pfad gespeichert
snapshot_root /media/backup/
# Bei einem Backup auf eine externes Medium wie eine USB-Festplatte sollte dieser Paramater
# aktiviert sein, da rsnapshot ansonsten den Pfad (bzw. Mount-Point) automatisch neu anlegt
no_create_root 1
# Externe Programme, die Standardwerte sind normalerweise ok
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
cmd_rsnapshot_diff /usr/bin/rsnapshot-diff
# Die Backup-Intervalle kann man hier festlegen. Wie viele Backups will man für den Zeitraum
# rückwirkend erhalten? In diesem Beispiel behalten wir die letzten 8 Backups, die wöchentl.
# angefertigt werden.
interval weekly 8
# Andere Beispiele:
# interval monthly 2
# interval hourly 6
# interval daily 7
# Mehr oder weniger Details ausgeben? Mögliche Werte sind 1 - 5.
# Dabei ist 1 der kleinste und 5 der höchste Wert. 2 ist Standard.
verbose 2
# Analog zu verbose, allerdings betrifft das effektiv nur den Output in die Log-Datei
loglevel 3
# Hier legen wir eine Log-Datei fest
logfile /var/log/rsnapshot.log
# Damit nicht mehrere Instanzen gleichzeitig gestartet werden, wird ein Lock-File erstellt.
lockfile /var/run/rsnapshot.pid
# Hier kann man optional noch bestimmte Dateien/Verzeichnisse ausschließen oder das
# Backup auf bestimmte Dateien begrenzen. Z.B. lost+found-Verzeichnisse könnte man als
# exclude eintragen.
#include ???
#exclude ???
#include_file /path/to/include/file
#exclude_file /path/to/exclude/file
###############################
### BACKUPS
###############################
# LOCALHOST
backup /home/ localhost/
backup /etc/ localhost/
backup /usr/local/ localhost/
# EXAMPLE.COM
backup root@example.com:/home/ example.com/
backup root@example.com:/etc/ example.com/ |
Die o.a. Datei ist gedacht für ein wöchentliches Backup.
Wichtig ist der Bereich ganz unten, die Zeilen die mit backup beginnen. Dabei kommt zuerst das Commando backup, dann das Quell- und abschließend das Ziel-Unterverzeichnis (relativ zum snapshot_root).
ACHTUNG! Die Werte hier sind durch Tabs getrennt, keine Leerzeichen.
Wie man sieht, kann man nicht nur lokale Verzeichnisse sichern, sondern auch Verzeichnisse anderer Rechner im LAN oder auch Verzeichnisse eines entfernten Servers sichern.
Dazu verbindet sich rsnapshot via SSH. Wie man eine Verbindung ohne Passworteingabe zu konfiguriert, habe ich hier näher beschrieben:
In meinem Beispiel habe ich die Backups auf eine externe USB-Festplatte gesichert, die in /media/backup ins Dateisystem gemountet ist.
Damit ich nun das Backup sehr bequem starten kann, habe ich noch folgendes, kleines Shell-Skript angelegt:
#!/bin/bash
MOUNTED=`grep -c "/media/backup" /proc/mounts`
if [ $MOUNTED -gt 0 ];then
rsnapshot -v -c /etc/rsnapshot.conf weekly
else
echo "/media/backup is not mounted! Cannot start backup!";
fi |
Da z.B. Ubuntu und Debian das Laufwerk automatisch mounten, habe ich hier auf eine entspr. Anweisung im Script verzichtet.
Einen entspr. Befehl könnte man aber in Zeile 2 noch einfügen, z.B. mount /dev/sdh1 /media/backup
Bitte unbedingt beim Kopieren des Skripts auf die Einhaltung der Leerzeichen achten!
So, jetzt kann man das Backup prinzipiell starten.
Entweder führt man dazu das o.a. Shell-Script aus oder man startet es durch den Befehl:
rsnapshot -v -c /etc/rsnapshot.conf weekly
Das Intervall weekly muß man ggf. (je nach Konfigurationsdatei) durch daily, hourly, etc. ersetzen.