|
|
|
## Backup per »rdiff-backup«
|
|
|
|
|
|
|
|
Am Beispiel der Dateien einer CouchDB-Installation soll gezeigt werden, wie das
|
|
|
|
Programm [»rdiff-backup«](http://www.nongnu.org/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
|
|
|
|
|
|
|
|
```bash
|
|
|
|
ssh-keygen -t rsa -N ""
|
|
|
|
```
|
|
|
|
Die Schlüssel sollten am standardmäßigen Platz gespeicht werden.
|
|
|
|
|
|
|
|
#### Kopieren des offiziellen Schlüssels zum Zielrechner
|
|
|
|
|
|
|
|
```bash
|
|
|
|
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«‹](ssh).
|
|
|
|
|
|
|
|
### Das backup-Script
|
|
|
|
|
|
|
|
```bash
|
|
|
|
#!/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](../../miscellaneous/blob/master/backupCouch) zu finden.
|
|
|
|
|
|
|
|
### Aktivieren des Cron-Jobs
|
|
|
|
|
|
|
|
Dafür wird unter `/etc/cron.d` eine Datei `backup` mit folgendem Inhalt angelegt:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
*/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:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
chmod 600 /etc/cron.d/backup
|
|
|
|
```
|
|
|
|
Ob das backup-Script erfolgreich war, kann mit
|
|
|
|
|
|
|
|
```bash
|
|
|
|
journalctl | grep backupCouch
|
|
|
|
```
|
|
|
|
oder
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cat /var/log/messages | grep backupCouch
|
|
|
|
```
|
|
|
|
erfragt werden.
|
|
|
|
|
|
|
|
### Restore
|
|
|
|
|
|
|
|
#### Stand von vor 10 Tagen wiederherstellen
|
|
|
|
|
|
|
|
```bash
|
|
|
|
rdiff-backup --force -r 10D e73462.berlin.ptb.de::/data/backup/vaclab/couchdb-a73434 \
|
|
|
|
/var/lib/couchdb
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Stand von vor 20 Minuten wiederherstellen
|
|
|
|
|
|
|
|
```bash
|
|
|
|
rdiff-backup --force -r 20m e73462.berlin.ptb.de::/data/backup/vaclab/couchdb-a73434 \
|
|
|
|
/var/lib/couchdb
|
|
|
|
```
|
|
|
|
#### Stand vom 2015-06-10 wiederherstellen
|
|
|
|
|
|
|
|
```bash
|
|
|
|
rdiff-backup --force -r 2015-06-10 e73462.berlin.ptb.de::/data/backup/vaclab/couchdb-a73434 \
|
|
|
|
/var/lib/couchdb
|
|
|
|
```
|
|
|
|
|
|
|
|
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](http://www.nongnu.org/rdiff-backup/examples.html#restore) von
|
|
|
|
»rdiff-backup« und in der man-Page
|
|
|
|
|
|
|
|
```bash
|
|
|
|
man rdiff-backup
|
|
|
|
```
|
|
|
|
|
|
|
|
Rolf Niepraschk |
|
|
\ No newline at end of file |