Workshop

Automatische Backups mit Linux

Funktion

Das Script prüft zuerst die Erreichbarkeit von linux_b über einen ping. Ist dies der Fall, synchronisiert linux_a alles, was in "backup.include" angegeben ist, in das Verzeichnis /home/backup/ nach linux_b. Ausgenommen sind die Dateien und Verzeichnisse, die in "backup.exclude" stehen.

Der Schalter --delete-after bewirkt ein Löschen aller Dateien auf linux_b, die auf dem Rechner linux_a nicht mehr vorhanden sind. Dieses Bereinigen bezieht sich nur auf den Content der zur Synchronisation angegeben ist. Im Beispiel-Script sind alle Verzeichnisse ausgenommen, die mit .kde und .mozilla beginnen.

Gibt der ping zu linux_b eine 0 zurück, dann sendet das Script ein E-Mail mit dem Betreff "Backup_fehlgeschlagen!". Die Empfänger dieser Warnmeldung sind in der Datei backup.mail hinterlegt. Den Text für den Hinweis enthält error.txt. All diese Dateien müssen im selben Verzeichnis liegen, ansonsten sind die Pfade in den entsprechenden Parametern anzupassen.

Die Optionen --include/--include-from und --exclude/--exclude-from sind sehr intelligent. Enthält die Datei backup.include zum Beispiel den zusätzlichen Eintrag

/root/.kde/share/config/

wird dieses Verzeichnis trotzdem gesichert. Äquivalent funktioniert dies ebenfalls mit den exclude-Optionen. Statt eines Verzeichnisses können Sie auch einzelne Dateien angeben.

Im Parameter RSYNC_OPTIONS ist über den Schalter -e ssh angegeben, dass jeglicher Transfer zu linux_b verschlüsselt abläuft. Normalerweise fragt das Script das Passwort von Benutzer backup auf dem Computer linux_b ab. Wird es allerdings von root auf Rechner linux_a ausgeführt, erfolgt die Authentifizierung ohne Passwort über den public_key. Somit ist eine Automatisierung via cron sehr leicht einzurichten. Als root auf linux_a

crontab -e

ermöglicht den Eintrag eines neuen Jobs.

30 2 * * * /<Pfad-zu-Skript>/backup.sh

führt das rsync-Script jede Nacht um 2.30 Uhr aus.