Regelmäßige Backups mit Rsyncbackup auf Debian Etch
Version 1.0
Author: Oliver Meyer <o [dot] meyer [at] projektfarm [dot] de>
Diese Anleitung veranschaulicht, wie man rsyncbackup auf Debian Etch einrichtet und konfiguriert. Rsyncbackup ist ein Perl Skript, welches mit rsync kooperiert. Die Konfiguration ist einfach und es kann regelmäßige Backups erstellen (partielle und inkrementelle).
Diese Anleitung ist ein praktischer Leitfaden ohne jegliche Gewähr – theoretisches Hintergrundwissen wird nicht abgedeckt. Es gibt viele Möglichkeiten ein solches System einzurichten – dies ist der Weg, den ich gewählt habe.
1 Vorbemerkung
Ich habe für diese Anleitung zwei Debian Systeme verwendet. Das erste System ist der Hauptserver (192.168.0.101), das zweite System ist der Backup Server (192.168.0.102), auf dem die Backups gespeichert werden.
2 Benötigte Pakete
2.1 Hauptserver
apt-get install openssh-client openssh-server rsync unzip
2.2 Backup Server
apt-get install openssh-client openssh-server rsync
3 SSH Key-Dateien
Lass uns nun SSH Key-Dateien erstellen, die später verwendet werden, damit sich rsyncbackup gegenüber dem Backup Server authentifizieren kann. Bitte beachte, dass man die Key-Dateien auch mit dem rsyncbackup Skript (rsyncbackup -r) erstellen kann – ich habe diese Variante gewählt.
3.1 Backup Server
Erstelle die Key-Dateien – drücke ENTER wenn Du gebeten wirst, ein Passwort einzugeben.
ssh-keygen -b 4096 -t rsa -C „Backup Key Comment“
Die Ausgabe sollte wie folgt aussehen:
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ‚/root/.ssh‘.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
23:e5:b2:2e:86:2f:e9:bc:76:56:83:6a:8d:f0:d6:23 Backup Key Comment
Nun müssen wir den Public Key der Liste authentifizierter Keys hinzufügen.
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
Danach kopieren wir den Private Key auf den Hauptserver.
scp /root/.ssh/id_rsa root@192.168.0.101:/root/.ssh/
Zum Schluss erstellen wir Ordner für die Backups.
mkdir -p /backups/configs/
mkdir /backups/logs/ /backups/manual/
3.2 Hauptserver
Lass uns nun testen, ob alles geklappt hat. Du müsstest in der Lage sein, Dich auf dem Backup Server anzumelden via:
ssh -i /root/.ssh/id_rsa root@192.168.0.102
Melde Dich danach ab.
exit
4 Rsyncbackup auf dem Hauptserver
4.1 Rsyncbackup beziehen
cd /tmp/
wget http://rsync-backup.googlecode.com/files/rsyncbackup.zip
unzip -d rsyncbackup rsyncbackup.zip
4.2 Skript & Konfigurationsdateien
Nun müssen wir das rsyncbackup-Skript zum richtigen Ort kopieren …
cp /tmp/rsyncbackup/rsyncbackup/rsyncbackup /usr/local/bin/
chmod 700 /usr/local/bin/rsyncbackup
… bevor wir die Konfigurationsdateien erstellen.
mkdir /etc/rsyncbackup/
mkdir /var/log/rsyncbackup/
touch /etc/rsyncbackup/config.conf /etc/rsyncbackup/destinations.conf /etc/rsyncbackup/sources.conf /etc/rsyncbackup/backupset.conf
ln -s /var/log/rsyncbackup/ /etc/rsyncbackup/logs
4.3 Konfiguration
4.3.1 Hauptkonfiguration
Diese Datei beinhaltet die Standard rsync Optionen für alle Backups.
vi /etc/rsyncbackup/config.conf
Der Inhalt könnte wie folgt aussehen:
--stats --progress --links --hard-links --times --recursive --perms --owner --group --compress --backup
Merke: Du kannst auch die kurze Variante – z.B.: „-p“ anstelle von „–perms“ verwenden. Ich habe mich zum besseren Verständnis für die längere Variante entschieden.
4.3.2 Quellen
Diese Datei beinhaltet alle Dateien/Ordner, die in den Backup Sets verfügbar sein sollen.
vi /etc/rsyncbackup/sources.conf
Der Inhalt könnte wie folgt aussehen:
configs|local:/etc|true| logs|local:/var/log|true|
Der Syntax: tag|source path|conditional shell code|optional rsync options
Merke: „true“ bedeutet, dass diese Quelle aktiviert ist – „false“ würde sie deaktivieren.
4.3.3 Zielorte
Diese Datei beinhaltet alle Zielorte, die in den Backup Sets verfügbar sein sollen.
vi /etc/rsyncbackup/destinations.conf
Der Inhalt könnte wie folgt aussehen:
store_configs|ssh[key=id_rsa,incremental=7,tag=increment]:root@192.168.0.102:/backups/configs/|/usr/bin/traceroute -m 2 192.168.0.102|--bwlimit=300 --delete store_logs|ssh[key=id_rsa,incremental=7,tag=increment]root@192.168.0.102:/backups/logs/|/usr/bin/traceroute -m 2 192.168.0.102|--bwlimit=300 --delete store_manual|ssh[key=id_rsa]:root@192.168.0.102:/backups/manual/|/usr/bin/traceroute -m 2 192.168.0.102|
Der Syntax: tag|destination path (optional with ssh & incremental settings)|conditional shell code|optional rsync options
In diesem Beispiel (erster und zweiter Zielort) verwenden wir unseren Backup Server als Zielort und authentifizieren uns ihm gegenüber mit dem Private ssh Key. Wir möchten eine Schrittweite von sieben behalten (incremental=7), deren Bezeichnung mit „increment“ (tag=increment) beginnt. Das optionale Shell Skript (/usr/bin/traceroute -m 2 192.168.0.102) wird „true“ zurückgeben (und das Backup starten) wenn der Backup Server läuft und mindestens zwei hops weg ist. Wir verwenden außerdem zwei rsync Optionen (–bwlimit=300 und –delete) – also haben wir für diesen Zielort ein Bandbreiten-Limit und Dateien, die auf dem Hauptserver gelöscht wurden, werden auch auf dem Backup Server gelöscht (für eine neue Schrittweite). Bitte beachte, dass Du nur EINE Quelle für ein Backup Set verwenden kannst, das einen inkrementellen Zielort hat.
4.3.4 Backup Sets
Diese Datei verbindet die Quellen mit den Zielorten.
vi /etc/rsyncbackup/backupset.conf
Sie könnte wie folgt aussehen:
[manual] configs,logs|store_manual|true|
[daily] logs|store_logs|true|
[weekly] configs|store_configs|true|
Wie Du sehen kannst, haben wir drei Backup Sets erstellt.
Der Syntax: source tags|destination tags|conditional shell code|optional rsync options
4.4 Test
Lass uns nun überprüfen, ob unsere Konfiguration in Ordnung ist.
rsyncbackup -x /etc/rsyncbackup -vv -d -s manual
Die Ausgabe sollte wie folgt aussehen:
PATH DIR:/etc/rsyncbackup/
LOG DIR:/etc/rsyncbackup/logs
CONFIG_FILE:/etc/rsyncbackup/config.conf
SOURCE FILE:/etc/rsyncbackup/sources.conf
DESTS_FILE:/etc/rsyncbackup/destinations.conf
BACKUPSET_FILE:/etc/rsyncbackup/backupset.conf
BACKUPSET:manual
Backup set 1 configs to store_manual
Source : configs
Source dir : [local] /etc
Source opts :
Source cond : true
Destination : store_manual
Destination dir : [ssh] root@192.168.0.102:/backups/manual/ [key=id_rsa,sshport=22]
Destination opts:
Destination cond: /usr/bin/traceroute -m 2 192.168.0.102
Config options : –stats –progress –links –hard-links –times –recursive –perms –owner –group –compress –backup
Backupset opts : true
All options : –stats –progress –links –hard-links –times –recursive –perms –owner –group –compress –backup
All conditions : /usr/bin/traceroute -m 2 192.168.0.102 true true
Backup set 2 logs to store_manual
Source : logs
Source dir : [local] /var/log
Source opts :
Source cond : true
Destination : store_manual
Destination dir : [ssh] root@192.168.0.102:/backups/manual/ [key=id_rsa,sshport=22]
Destination opts:
Destination cond: /usr/bin/traceroute -m 2 192.168.0.102
Config options : –stats –progress –links –hard-links –times –recursive –perms –owner –group –compress –backup
Backupset opts : true
All options : –stats –progress –links –hard-links –times –recursive –perms –owner –group –compress –backup
All conditions : /usr/bin/traceroute -m 2 192.168.0.102 true true
Wenn alles gut aussieht, nehmen wir unser erstes Backup vor.
rsyncbackup -x /etc/rsyncbackup -b -s manual
Danach sollte das Backup auf dem Backup Server sein – wenn nicht, sieh Dir Log-Dateien (/etc/rsyncbackup/logs/ oder /var/log/rsyncbackup/) an.
4.5 Cronjob
Nun erstellen wir Cronjobs für die Backups.
crontab -e
Der Inhalt könnte wie folgt aussehen:
# m h dom mon dow command # Backups 00 02 * * * /usr/local/bin/rsyncbackup -x /etc/rsyncbackup -b -v -s daily >> /var/log/rsyncbackup/backup.daily.log 00 04 * * 0 /usr/local/bin/rsyncbackup -x /etc/rsyncbackup -b -v -s weekly >> /var/log/rsyncbackup/backup.weekly.log
Das Backup Set „daily“ wird täglich um 2:00 Uhr gestartet, das Backup Set „weekly“ jeden Sonntag um 4:00 Uhr. Wenn Du E-Mails erhalten möchtes, sobald ein Fehler auftaucht, kannst Du die Option „-e email@domain“ dem rsyncbackup Befehl hinzufügen – so sollte es aussehen:
# m h dom mon dow command # Backups 00 02 * * * /usr/local/bin/rsyncbackup -x /etc/rsyncbackup -b -v -s daily -e email@domain >> /var/log/rsyncbackup/backup.daily.log 00 04 * * 0 /usr/local/bin/rsyncbackup -x /etc/rsyncbackup -b -v -s weekly -e email@domain >> /var/log/rsyncbackup/backup.weekly.log
4.6 Manual
Sieh Dir bitte das Manual für weitere Informationen an. Es ist in dem Paket enthalten, das Du in Schritt 4.1 runter geladen hast.
5 Links
- Debian: http://www.debian.org/
- Rsyncbackup: http://code.google.com/p/rsync-backup/