Workshop

Automatische Backups mit Linux

Beispiel-Script

Für das Beispielszenario könnte ein Backup-Script so aussehen:

####### Configuration ########
REMOTE="192.168.1.100" # Rechner auf den gesichert wird
REMOTEUSER="backup" # User, auf den via ssh ohne Passwort zugegriffen wird
TARGET="/home/backup/" # Verzeichnis, wohin das Backup geschoben wird
SUBJECT="Backup_fehlgeschlagen!" # im Subject kein Leerzeichen!
MAILTO="./backup.mail" # Mailadressen, die im Error-Fall Mail erhalten
ERROR="./error.txt" # Text, der im Error-Fall versandt wird
INCLUDE="./backup.include" # Dateien, von denen ein Backup gemacht wird
EXCLUDE="./backup.exclude" # Dateien, von denen kein Backup gemacht wird

RSYNC=/usr/bin/rsync
RSYNC_OPTIONS="-rlpvu --delete-after --ignore-errors -e ssh"
CAT=/bin/cat
MAIL=/usr/bin/mail
CHECK_REMOTE=`ping -c1 $REMOTE | grep packet | awk '{print $4}'` # gibt 1 (online) oder 0 (offline) zurueck
SOURCE="/"
##############################


if [ $CHECK_REMOTE == 1 ]; then
$RSYNC $RSYNC_OPTIONS $SOURCE $REMOTEUSER\\@$REMOTE\\:$TARGET --files-from=$INCLUDE --exclude-from=$EXCLUDE
else
$CAT $MAILTO | while read line
do
$MAIL $line -s $SUBJECT < $ERROR
done
fi

Konfigurationsdateien

Wir benötigen noch zwei weitere Dateien. Mit backup.include legen Sie fest, welche Verzeichnisse berücksichtigt werden sollen, beispielsweise:

/var/
/usr/
/etc/
/boot/
/home/
/root/
/opt/
/bin/

Die Datei backup.exclude gibt an, welche Verzeichnisse nicht gesichert werden sollen, also beispielsweise:

.kde/*
.mozilla/*

Das Script backup.sh und die zugehörigen Dateien finden Sie auch auf der mitgelieferten CD im Verzeichnis.