Workshop

Automatische Backups mit Linux

Beispiel-Script

Die Datei incremental.sh ist auf der Heft-CD im Verzeichnis /zusatzpakete/backup/tar_ssh/ hinterlegt.

########## Configuration ############
BACKUPFILES="/etc/ /home/ /usr/ /var/" # zu sichernde Verzeichnisse
REMOTE="192.168.1.100" # Rechner auf den gesichert wird
REMOTEUSER="backup" # User, auf den via ssh ohne Passwort zugegriffen wird
REMOTEDIR="/home/backup/" # Backup-Verzeichnis auf Remote-Rechner
AGE="-1" # -1 = Nicht aelter als 24 Stunden, -2 = 48 ...
MAILTO="./backup.mail" # Mailadressen, die im Error-Fall Mail erhalten
SUBJECT="Backup_fehlgeschlagen!" # im Subject kein Leerzeichen!
ERROR="./error.txt" # Text, der im Error-Fall versandt wird

DATE=`/bin/date +%Y%m%d` # Datum im Format YearMonthDay
HOST=`/bin/hostname`

TAR=/bin/tar
FIND=/usr/bin/find
TAROPTIONS="c"
SSH=/usr/bin/ssh
CAT=/bin/cat
GZIP=/usr/bin/gzip
MAIL=/usr/bin/mail

REMOTEFILE="incremental_$HOST".$DATE."tgz" # Dateiname der Backup-Datei
CHECK_REMOTE=`ping -c1 $REMOTE | grep packet | awk '{print $4}'` # gibt 1 (online) oder 0 (offline) zurueck
#####################################

if [ $CHECK_REMOTE == 1 ]; then
$FIND $BACKUPFILES -mtime $AGE -type f -exec $TAR $TAROPTIONS {} \\; | $GZIP | $SSH $REMOTEUSER\\@$REMOTE "cat > $REMOTEDIR$REMOTEFILE"
else
$CAT $MAILTO | while read line
do
$MAIL $line -s $SUBJECT < $ERROR
done
fi