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

0 Kommentar(e)

Zum Posten von Kommentaren bitte