Linux: Backup zwischen Servern mit rsync (via SSH)

Installieren Sie auch beiden Server (Datenquelle und Ziel) das Programm "rsync". Auch auf dem Zielcomputer muss diese Software installiert sein, da dieser natürlich das Protokoll verstehen muss:

apt-get install rsync
Vorbereitung des zu sichernden Servers (Datenquelle) Erzeugen Sie auf der Datenquelle (dem zu sichernden Computer) einen DSA Schlüssel. Führen Sie dafür den folgenden Befehl als Benutzer "root" aus:
ssh-keygen -t dsa
Bestätigen Sie bei den Rückfragen den Dateinamen für den Schlüssel und das Verschlüsselungspasswort jeweils mit Enter. Anschließend finden Sie auf dem Computer die beiden folgenden Dateien:
  • /root/.ssh/id_dsa Privater DSA Schlüssel. Dieser darf nicht weitergegeben oder veröffentlicht werden
  • /root/.ssh/id_dsa.pub Öffentlicher DSA Schlüssel. Dieser wird später auf den Backup-Server kopiert

Vorbereitung des Sicherungsservers (Datenziel)

Erstellen Sie einen neuen Benutzer "remotebackup"
useradd -m remotebackup
... und vergeben Sie ein geheimes Passwort für diesen Benutzer:
passwd remotebackup
Sie dürfen aus Sicherheitsgründen dem Benutzer "remotebackup" keine Root-Rechte geben. Jedoch wird für das Ausführen des rsync Programmes dieses Recht benötigt - u.a. um alle Verzeichnisse lesen zu können. Zum Lösen dieser Situation nutzen wir das Programm "visudo":
visudo
Fügen Sie die folgende Zeile in der angezeigten Datei hinzu ...
remotebackup ALL=(root)NOPASSWD:/usr/bin/rsync
... und beenden Sie die Eingabe durch Drücken der "ESC" Taste. Geben Sie dann "wq" ein und drücken Sie die "Enter" Taste. Die Änderung wird gespeichert. Im nächsten Schritt erlauben wir dem zu sichernden Server die automatisch Anmeldung am Zielserver. Dafür nutzen wir die automatische, schlüsselbasierte Authentifizierung per SSH. Dabei muss der zu sichernde Server automatisch die Gültigkeit des übergebenen DSA Schlüssels überprüfen können. Erstellen Sie auf dem Ziel-Server das Verzeichnis "/home/remotebackup/.ssh" - sofern es noch nicht existieren sollte:
su remotebackup
mkdir ~/.ssh
chmod 700 ~/.ssh
Fügen Sie den öffentlichen DSA-Schlüssel (s.o.) an das Ende der Datei "/home/remotebackup/.ssh/authorized_keys" ein:
cd ~/.ssh
ssh -l root [IP Quell-Server] cat /root/.ssh/id_dsa.pub >> authorized_keys
chmod 600 authorized_keys Sollte dieser Weg nicht funktionieren, können Sie natürlich auch die Datei per "scp" kopieren und den Inhalt dann manuell anfügen. Im letzten Schritt für eine automatische SSH Authentifizierung müssen Sie die entsprechende Option in der Datei "/etc/sshd/sshd_config" aktivieren:
PubkeyAuthentication yes
Testen Sie die automatische Authentifizierung:
ssh -l remotebackup [IP Quell-Server]

Datensicherung (Skripte)

Die beiden Server sind vorbereitet. Auf dem Quell-Server legen Sie nun bitte die Datei "/root/rsync-excludes.conf" an. Diese enthält alle Verzeichnisse, welche nicht gesichert werden sollen. Dabei werden auch deren Unterverzeichnisse nicht gesichert.
/cdrom
/dev
/lost+found
/proc
/sys
/tmp
Erstellen Sie das Backupscript "/usr/local/bin/backup.sh":
#!/bin/sh

echo "Starte Server-Backup .."

BACKUPDIR=/
TARGETUSER=remotebackup
TARGETDIR=/home/remotebackup/backup_`date +'%Y-%m-%d'`
EXCLUDES=/root/rsync-excludes.conf

BACKUPSERVER=[IP Ziel-Server]

rsync -avz --numeric-ids -e ssh --delete --delete-excluded --stats --exclude-from="$EXCLUDES" $BACKUPDIR $TARGETUSER@$BACKUPSERVER:$TARGETDIR

echo "Backup beendet."
Vergessen Sie bitte nicht, im vorherigen Script die IP (oder den Hostnamen) des Ziel-Servers einzusetzen. Danach machen Sie das Skript bitte ausführbar:
chmod a+x /usr/local/bin/backup.sh

Script testen

Testen Sie die Datensicherung des Servers durch das manuelle Starten des Scriptes:
backup.sh

Automatische Datensicherung (Batch / CronJob)

Um die Datensicherung (Serverkopie) automatisch jeden Morgen um 4 Uhr zu starten, fügen Sie in der Datei "/etc/crontab" die folgende Zeile ein:
0 4   * * *  root   /usr/local/bin/backup.sh