Backup: Automatische Skripte mit rsync

Aus Hergipedia
Zur Navigation springen Zur Suche springen

Voraussetzungen

Man braucht auf den Quell- und Zielrechnern jeweils rsync. Bei Linux ist das in der Standardinstallation enthalten. Bei Windows braucht man cygwin. Zusätzlich zur normalen cygwin-Paketauswahl folgende Pakete anwählen:

Net --> rsync, openssh

Falls der Quellrechner auf Windows laeuft, muss dann noch ein openssh Server eingerichtet werden. Das geht auf der cygwin-Kommandozeile mit:

ssh-host-config

Dann alle Defaults befolgen und die Frage, ob der SSH-Server als Dienst gestartet werden soll, mit ja beantworten. Der SSH-Server wird dann als Systemdienst installiert und bei jedem Neustart automatisch gestartet.
Manuelles Starten und Stoppen des Servers auf der Kommandozeile:

cygrunsrv --start sshd
cygrunsrv --stop sshd

Ggf. muss sshd.exe noch in der Windows-Firewall freigegeben werden.


Erstellen des eigentlichen Backupscripts

rsync kann bequem Verzeichnisse synchronisieren. Die Scripte sind ascii-Textfiles.

Beispielscript:

Das folgende Script läuft auf der alten Kiste und sorgt für das automatische Backup des home-Bereichs der acid1.

#!/bin/bash

# acid1 home-directory autobackup
rsync -aul -e ssh --exclude-from=/home/datenbackups/acid_rsync_exclude.txt --backup --backup-dir=/home/datenbackups/acid1_backup --delete acid1:/home/ /home/datenbackups/acid1/home/

Bei Unklarheiten hilft die Kommandozeile:

rsync --help

oder ausfuehrlicher:

man rsync

Fuer uns besonders wichtig waren folgende Optionen:

-a             (Dateiattribute bleiben bestehen)
-u             (update: nur aeltere Dateien überschreiben)
--delete       (Dateien, die auf dem Quellrechner geloescht wurden, auch auf dem Ziel loeschen)
--backup       (Dateien, die auf dem Ziel mit --delete geloescht werden, werden in ein Backupverzeichnis verschoben)
--backup-dir   (das besagte Backupverzeichnis)
--exclude-from (Datei, die angibt, was NICHT synchronisiert werden soll, z.B. Gaussian Checkpoints; siehe acid_rsync_exclude.txt)

Nach der Erstellung muessen die Scripts mit chmod ausfuehrbar gemacht werden.


Einrichtung des cron-Dienstes

Der cron-Dienst sorgt dafuer, dass die Backupscripts regelmaessig nach Zeitplan ausgefuehrt werden. Der Zeitplan wird in eine Datei namens crontab geschrieben. Eine bestehende crontab kann man mit folgendem Befehl anzeigen:

crontab -l

Den Editiermodus startet man mit dem Befehl:

crontab -e

Es oeffnet sich ein Editor (meist vim), in dem man die Datei editiert.

Beispiel-Crontab:

Die folgende crontab läuft auf der alten Kiste und sorgt dafür, daß das oben gezeigte Beispiel-Script zum angegebenen Zeitplan ausgeführt wird:

SHELL=/bin/bash

# taegliches Autobackup um 02:00 Uhr der ACID-Rechner
0 2 * * * /home/datenbackups/autobackup_acid

Mit Raute # kommentiert man Befehle aus. Am Anfang kann man die Shell festlegen, am besten /bin/bash. Wichtig: Es sollte immer der vollstaendige Pfad zu den Backupscripts angegeben werden, sonst funzt es nicht. Vor jedem Befehl stehen die Zeitplan-Infos in Form von 5 Zahlen(gruppen): 1. Minute, 2. Stunde, 3. Tag, 4. Monat, 5. Wochentag (1=Montag, 2=Dienstag etc.) Sternchen * als Platzhalter sind ebenfalls zulaessig. Beispiel: 0 12 * * 2 bedeutet: ausfuehren immer dienstags um 12:00 Uhr. Beim Speichern der Datei wird die neue crontab automatisch installiert.

Fehlermeldungen resultieren meist in einer Systemmail an den jeweiligen Benutzer, die man in /var/mail/<username> findet.