Rsnapshot
(Die Seite wurde neu angelegt: Es erstellt versionierte Backups und kann mehrere lokale und entfernte Quellen via rsync + ssh sichern. Die einzelnen Quellen werden sequenziell abgearbeitet, sodaß e...) |
K |
||
Zeile 83: | Zeile 83: | ||
Für den eigenen Cronjob wird /etc/cron.d/rsnapshot kopiert: | Für den eigenen Cronjob wird /etc/cron.d/rsnapshot kopiert: | ||
− | cp /etc/cron.d/rsnapshot /etc/cron.d/rsnapshot-buero | + | ~# cp /etc/cron.d/rsnapshot /etc/cron.d/rsnapshot-buero |
und angepaßt: | und angepaßt: |
Version vom 2. Juni 2011, 17:28 Uhr
Es erstellt versionierte Backups und kann mehrere lokale und entfernte Quellen via rsync + ssh sichern.
Die einzelnen Quellen werden sequenziell abgearbeitet, sodaß einerseits keine zu hohe Last auf dem System entsteht, andererseits langsame Verbindungen den Prozeß stark in die Länge ziehen können. Um dies zu verhindern, können mehrere Konfigurationen angelegt werden, die durch separate Cronjobs getrennt aufgerufen werden.
Wichtige Anpassungen in der Konfiguration /etc/rsnapshot.conf:
snapshot_root /srv/backup/ rsync_short_args -av rsync_long_args --delete --numeric-ids --relative --delete-excluded ssh_args -C -i /etc/rsnapshot.d/id_rsa exclude_file /etc/rsnapshot.d/exclude.list logfile /var/log/rsnapshot.log lockfile /var/run/rsnapshot.pid ############################### ### BACKUP POINTS / SCRIPTS ### ############################### backup_script /bin/date "+ backup of LOCALHOST started at %c" unused0 backup /home/ localhost/ backup /etc/ localhost/ backup /root/ localhost/ backup /var/backups/ localhost/ backup_script /bin/date "+ backup of SRV01 started at %c" unused1 backup root@srv01:/home/ :/var/backups/ :/etc/ :/root/ srv01/ exclude_file=/etc/rsnapshot.d/exclude-srv01.list backup_script /bin/date "+ backup ended at %c" unused9
Da die Basiskonfiguration von rsnapshot direkt in /etc liegt, legen wir für weitere Dateien das Verzeichnis /etc/rsnapshot.d an. Darin werden der SSH-Key (id_rsa), die exclude.list für localhost, weitere exclude-*.list für externe Backupquellen, sowie später weitere *.conf für eigene Prozesse abgelegt.
In weiteren Konfigurationen muß auf jeden Fall ein abweichendes snapshot_root verwendet werden!
Da jeder Backuplauf die darin enthaltenen Verzeichnisse rotiert, würde dies zu häufig geschehen und ältere Backups früher als geplant gelöscht. Es entstehen u.U. auch Lücken in den Backups, falls sich die Intervalle unterscheiden. Das hat wiederum zur Folge, daß unnötige Vollbackups gezogen werden. Dadurch steigt sowohl die übertragene Datenmenge als auch der benötigte Festplattenplatz enorm an.
Damit die Backupprozesse unabhängig voneinander laufen können, benötigt jeder ein eigenes lockfile.
Bei Bedarf kann auch ein eigenes logfile und ggf. auch ein eigener SSH-Key angegeben werden. Das exclude_file ist bei zusätzlichen Konfigurationen nicht nötig, da es hier in dem Backup-Aufruf als exclude_file=... angegeben wird.
Den SSH-Key erzeugen wir mit
~# ssh-keygen -C rsnapshot@backup-server -f /etc/rsnapshot.d/id_rsa
und geben kein Passwort an.
Danach kann dieser mit
~# ssh-copy-id -i /etc/rsnapshot.d/id_rsa root@srv01
übertragen werden. Dazu wird aber ein Login per Passwort bei root auf srv01 oder besser ein dort hinterlegter Key benötigt, der per ForwardAgent in der aktuellen Sitzung aktiv ist. Sonst muß der Key per scp übertragen und lokal an die authorized_keys angefügt werden.
Mehrere zu sichernde entfernte Verzeichnisse werden mit einem ":" beginnend angegeben (siehe auch man rsync). Diese Verzeichnisse tauchen auch in der Zeile des Backup-Keys in der authorized_keys des zu sichernden Servers auf:
from="backup-server",no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,\ command="rsync --server --sender -vlogDtprRe.iLsf --numeric-ids . /home/ /var/backups/ /etc/ /root" ssh-rsa AAA...Bw1 rsnapshot@backup-server
Die Angabe des Servernamens im from="..." ermittelt man am Besten mit
~# host $BACKUPSERVER_IP
auf dem zu sichernden Server.
Die rsync-Optionen korrespondieren mit denen aus der rsnapshot-Konfiguration. Anpassungen müssen auf beiden Seiten erfolgen. Stimmt der Aufruf nicht überein, schlägt rsync fehl, wird ein Verzeichnis nur in der .conf am Ende ergänzt, wird dieses ignoriert. Zu beachten ist der fehlende "/" hinter der letzten Pfadangabe.
Die date-Aufrufe sind nur informativ, um den zeitlichen Ablauf in der Status-Mail zu sehen. Das dahinter angegebene unused* darf in einer Konfiguration nicht mehrfach verwendet werden, da es als Dummy für das Backup-Target steht. Ein mehrfach verwendetes Backup-Target verhindert die Ausführung des Backups.
Ein eigener Prozeß für das mit einer langsamen Leitung angeschlossene Büro würde etwa so aussehen:
/etc/rsnaphot.d/buero.conf
snapshot_root /srv/backup_buero/ rsync_short_args -av rsync_long_args --delete --numeric-ids --relative --delete-excluded ssh_args -C -i /etc/rsnapshot.d/id_rsa logfile /var/log/rsnapshot-buero.log lockfile /var/run/rsnapshot-buero.pid #interval hourly ############################### ### BACKUP POINTS / SCRIPTS ### ############################### backup_script /bin/date "+ backup of BUERO started at %c" unused1 backup root@srv01:/home/ :/var/backups/ :/etc/ :/root/ srv01/ exclude_file=/etc/rsnapshot.d/exclude-buero.list backup_script /bin/date "+ backup ended at %c" unused9
Für den eigenen Cronjob wird /etc/cron.d/rsnapshot kopiert:
~# cp /etc/cron.d/rsnapshot /etc/cron.d/rsnapshot-buero
und angepaßt:
#10 1-23/4 * * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/buero.conf hourly 35 1 * * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/buero.conf daily 5 1 * * 1 root /usr/bin/rsnapshot -c /etc/rsnapshot.d/buero.conf weekly 35 0 1 * * root /usr/bin/rsnapshot -c /etc/rsnapshot.d/buero.conf monthly
Die stündliche Sicherung wird sowohl in der buero.conf, als auch im Cronjob deaktiviert, damit das Backup den Internetzugang tagsüber nicht lahmlegt.