Backup: Automatische Skripte mit rsync
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 Editiermoduns startet man mit dem Befehl:
crontab -e
Es oeffnet sich ein Editor (meist vim), in dem man die Datei editiert. Als Beispieldatei siehe crontab.altekiste. 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.