Backup per »rdiff-backup«
Am Beispiel der Dateien einer CouchDB-Installation soll gezeigt werden, wie das Programm »rdiff-backup« eingerichtet und verwendet werden kann. »rdiff-backup« ist ein relativ einfach zu bedienendes Programm. Es ist langjährig erprobt.
Zu installierende Komponenten
Da »rdiff-backup« meist in den Standard-Repositorien einer Linux-Installation zu finden ist, gelingt die Installation sehr leicht. Unter openSUSE:
zypper in rdiff-backup
Dies muss sowohl auf dem Rechner, dessen Daten gesichert werden sollen, als auch auf den entfernten Backup-Servern getan werden.
ssh-Konfiguration
Da der Backup-Prozess automatisch per Cron-Job ablaufen soll, ist es nicht sinnvoll und auch nicht möglich vor dem Transferieren der Dateien zu anderen Rechnern die Frage nach einem Passwort zu beantworten. Daher werden hier »public keys« wie folgt verwendet:
Erzeugen eines Schlüssel-Paars, wenn noch nicht geschehen
ssh-keygen -t rsa -N ""
Die Schlüssel sollten am standardmäßigen Platz gespeicht werden.
Kopieren des offiziellen Schlüssels zum Zielrechner
ssh-copy-id e73462.berlin.ptb.de
Password: ......
# letztmalige Passworteingabe
Es ist zu beachten, dass »e73462« und »e73462.berlin.ptb.de« zwar dieselben Rechner sind, aber verschiedene Einträge in den Konfigurationsdateien von »ssh« hervorrufen.
Danach sollte man sich testweise als »root« in den Zielrechner einloggen. Eine Passwortabfrage darf nicht mehr auftreten.
Diese Schritte sind für weitere Zielrechner zu wiederholen. Siehe dazu auch die Hinweise im Artikel ›Einloggen per »ssh«‹.
Das backup-Script
#!/bin/sh
# Backup for couchdb files
#
# Rolf Niepraschk (Rolf.Niepraschk@ptb.de), 2015-06-10
#
# paranoia settings
#
umask 022
PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH
DEST_HOST1="e73462.berlin.ptb.de"
DEST_HOST2="i75434.berlin.ptb.de"
DEST_DIR="/data/backup/vaclab/couchdb-a73434"
SRC_DIR="/var/lib/couchdb"
REMOVE_TIME="4W" # four weeks
echo "backup from $SRC_DIR to $DEST_HOST1"
/usr/bin/rdiff-backup $SRC_DIR $DEST_HOST1::$DEST_DIR
echo "remove old informations at $DEST_HOST1"
/usr/bin/rdiff-backup --remove-older-than $REMOVE_TIME $DEST_HOST1::$DEST_DIR
echo "backup from $SRC_DIR to $DEST_HOST2"
/usr/bin/rdiff-backup $SRC_DIR $DEST_HOST2::$DEST_DIR
echo "remove old informations at $DEST_HOST2"
/usr/bin/rdiff-backup --remove-older-than $REMOVE_TIME $DEST_HOST2::$DEST_DIR
exit
Diese nach /usr/local/bin/backupDirectory
zu kopierende Datei erledigt die
eigentliche Arbeit des inkrementellen Backups zu zwei anderen Rechnern.
Zusätzlich wird dafür gesorgt, dass keine Informationen, die älter als vier
Woche sind, gespeichert bleiben. Bei dem hier gezeigten Quelltext handelt es
sich um eine frühe Version. Die aktuelle Version ist
hier zu finden.
Aktivieren des Cron-Jobs
Dafür wird unter /etc/cron.d
eine Datei backup
mit folgendem Inhalt angelegt:
*/30 * * * * root /usr/local/bin/backupDirectory
Dies bewirkt, dass alle 30 Minuten das Script /usr/local/bin/backupDirectory
gestartet wird. Die Datei darf aus Sicherheitsgründen nur von seinem Besitzer
(hier »root«) lesbar sein:
chmod 600 /etc/cron.d/backup
Ob das backup-Script erfolgreich war, kann mit
journalctl | grep backupCouch
oder
cat /var/log/messages | grep backupCouch
erfragt werden.
Restore
Stand von vor 10 Tagen wiederherstellen
rdiff-backup --force -r 10D e73462.berlin.ptb.de::/data/backup/vaclab/couchdb-a73434 \
/var/lib/couchdb
Stand von vor 20 Minuten wiederherstellen
rdiff-backup --force -r 20m e73462.berlin.ptb.de::/data/backup/vaclab/couchdb-a73434 \
/var/lib/couchdb
Stand vom 2015-06-10 wiederherstellen
rdiff-backup --force -r 2015-06-10 e73462.berlin.ptb.de::/data/backup/vaclab/couchdb-a73434 \
/var/lib/couchdb
Weiteres Beispiel mit aktuellen Pfaden
rdiff-backup --force /data/backups/mysql-a73435 /var/lib/mysql
Der Kommandozeilenparameter --force
ist in den Fällen erforderlich, wenn
Dateien mit demselben Namen wie die zu schreibenden bereits existieren. Näheres
zu den Zeitangaben findet man auf der
home-Page von
»rdiff-backup« und in der man-Page
man rdiff-backup
Rolf Niepraschk