Rsnapshot
rsnapshot ist eine Software zur Erstellung von Datensicherungen von lokalen oder entfernten Rechnern. "snapshot" leitet sich ab von Schnappschuss.
Neben einer vollständigen Datensicherung (Full Backup) können auch platzsparende, inkrementelle Datensicherungen gemacht werden, wobei Hardlinks zum Einsatz kommen. rsnapshot basiert auf rsync. Datensicherungen von entfernten Rechnern werden mittels "rsync über ssh" oder per rsync-Server über das IP-Netzwerk vorgenommen.
rsnapshot läuft auf allen gängigen UNIX-basierten Betriebssystemen und ist als Freie Software unter den Bedingungen der GPL im Quelltext erhältlich.
Konfiguration
rsnapshot.conf
Änderungen gegenüber Default-Konfig /etc/rsnapshot.conf:
snapshot_root /data/backup/snapshots cmd_ssh /usr/bin/ssh #interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3 verbose 3 sync_first 0 use_lazy_deletes 0 backup /etc/ localhost/ one_fs=1,+rsync_long_args=--exclude-from=/etc/rsnapshot_exclude_server backup_script /root/bin/backup_mysql.sh localhost dbname localhost/database-snapshots/dbname
Wichtig sind die Tabs zwischen den Einträgen.
Beispiel /etc/rsnapshot_exclude_server:
/srv/www/htdocs/bilder /srv/www/htdocs/videos
Cron
/etc/cron.daily/rsnapshot:
#!/bin/sh /usr/bin/rsnapshot daily exit 0
/etc/cron.weekly/rsnapshot:
#!/bin/sh /usr/bin/rsnapshot weekly exit 0
/etc/cron.monthy/rsnapshot:
#!/bin/sh /usr/bin/rsnapshot monthly exit 0
MySQL Backup Script
/root/bin/backup_mysql.sh:
#!/bin/bash
# Backup of remote or local MySQL databases for using with rsnapshot
# Author: Ralf Krüdewagen
#$1: host
#$2: database
HOST=$1
DB=$2
USER=root
DB_USER=root
DB_PW=password
REMOTE_DIR=/data/backup/database-snapshots
LOCAL_DIR=/data/backup/database-snapshots-local
###################################################################
# method for copying dumps from remote machine to rsnapshot sever.
# This method shall be used for backup_script. Single runs are needed for each DB.
# Advantage: rsnapshot compares the files and saves disk space.
###################################################################
function backup_remote ()
{
DB=$1
ssh $USER@$HOST "cd $REMOTE_DIR;mysqldump -u $DB_USER -p$DB_PW $DB > mysql-$DB.sql;chmod 600 mysql-$DB.sql"
scp $USER@$HOST:$REMOTE_DIR/mysql-$DB.sql .
}
function backup_local ()
{
DB=$1
mysqldump -u $DB_USER -p$DB_PW $DB > $LOCAL_DIR/mysql-$DB.sql
chmod 600 $LOCAL_DIR/mysql-$DB.sql
cp $LOCAL_DIR/mysql-$DB.sql .
}
#backup_remote $DB
backup_local $DB
Alternativen
Dirvish: http://www.dirvish.org/
Literatur
- Inkrementelle Backups mit Rsnapshot, Linux Magazin 03/2005
- Rsnapshot, LinuxUser 08/2006
- Backup für Linux, c't 7/06, Seite 212