Backup mit rdiff-backup
Post date: 17.04.2010 10:25:15
Die hier aufgeführten Infos beziehen sich auf ein Linux basiertes System
Wie kann ich ein Incrementelles Backup über rdiff-durchführen?
Einfach rdiff-backup aus den Paketquelle installieren.
Ich habe mir folgendes Script angelegt (vorzugsweise unter /usr/local/bin/backup.sh) - siehe auch Dateianhang
#!/bin/bash
TARGET="/backup/local"
DATUM="$(date +%d-%m-%Y)"
### Test ob Backupverzeichnis existiert und Mail an Admin bei fehlschlagen
if [ ! -d "${TARGET}" ]; then
mail -s "Backupverzeichnis nicht vorhanden!" root <<EOM
Hallo,
das Backup am ${DATUM} konnte nicht erstellt werden. Das Verzeichnis ${TARGET} wurde nicht gefunden und konnte auch nicht angelegt werden.
Mit freundlichem Gruss Backupscript
EOM
exit 1
fi
# Backup durchführen
rdiff-backup -v5 --print-statistics --include-globbing-filelist /etc/backup-config.list / $TARGET
# erfolgreich falls nicht mail
if [ $? -ne 0 ]; then
mail -s "Backup fehlerhaft!" root <<EOM
Hallo,
das Backups konnte am ${DATUM} nicht erstellt werden.
Mit freundlichem Gruss Backupscript
EOM
exit 1
fi
rdiff-backup --remove-older-than 1W $TARGET
if [ $? -ne 0 ]; then
mail -s "alte Backupdaten löschen fehlerhaft!" root <<EOM
Hallo,
die alten Backupdaten konnte am ${DATUM} nicht gelöscht werden.
Mit freundlichem Gruss Backupscript
EOM
exit 1
fi
mail -s "Backup erfolgreich!" root <<EOM
Hallo,
die Backup wurde am ${DATUM} ordnungsgemäss durchgeführt.
Mit freundlichem Gruss Backupscript
EOM
exit 0
Dieses Script startet das Backup und sichert alles ab / in das definierte TARGET verzeichnis "/backup/local"
(das Verzeichnis muss vorher angelegt werden und existieren).
Als kleine Info schreibt das Scrpt dem root User eine Mail über den erfolg oder misserfolg des Backups
Wie grenze ich Dateien oder Verzeichnisse aus?
Dafür gibt die Datei "/etc/backup-config.list" (siehe Anhang). Innerhalb dieser Datei werden Verzeichnisse includiert bzw. excludiert (mit einem '-' zeichen davor).
In meinem Fall excludiere ich einige Verzeichnisse die nicht mitgesichert werden sollen oder dürfen.
Wie zum Beispiel das Backup Verzeichnis selbst (Schleife).
Die Datei kann an beliebiger stelle kopiert werden (falls die geändert wird, muss das Script angepasst werden) ich habe es unter "/etc/backup-config.list" abgelegt.
Beispiel:
- /cdrom
- /dev
- /lost+found
- /media
- /mnt
- /proc
- /sys
- /tmp
- /var/cache
- /var/tmp
- /var/backups
- /backup
- **/.gvfs
Für weiter Optionen bzw. Infos zu rdiff-backup einfach mal auf der Homepage nachschauen.
Wie starte ich das Backup täglich?
hierzu benutzte ich Anacron (jeder andere Scheduler tut es auch).
Bei Ubuntu ist Anacron per default schon installiert und ein täglicher Task kann einfach dadurch erzeugt werden, indem ein Script in das Verzeichnis "/etc/cron.daily" kopiert wird.
Ein beispiel für das Ausführen des oben beschriebenen Backups (Datei mit dem Namen "backup", auch im Anhang zu finden).
#!/bin/bash
ionice -c3 nice -n 19 /usr/local/bin/backup.sh >/dev/null 2>&1
Die Datei in das Cron Verzeichnis anlegen und ausführbar machen:
chmod +x backup
Das wars, jetzt sollte das Backup täglich laufen.
Randbemerkung:
durch "ionice" bzw. "nice" erreichen wir eine schonende Ausführung des Hintergrundjobs. Details hierzu kann aus dem Manuall der jeweiligen tools entnommen werden.