Workshop

Automatische Backups mit Linux

Beispiel-Script

Für unser Beispielszenario sieht ein Beispiel-Script so aus: User root auf linux_a triggert die Sicherung an. Die Datei backup.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
SUBJECT="Backup_fehlgeschlagen!" # im Subject kein Leerzeichen!
ERROR="./error.txt" # Text, der im Error-Fall versandt wird
MAILTO="./backup.mail" # Mailadressen, die im Error-Fall Mail erhalten

DATE=`/bin/date +%Y%m%d` # Datum im Format YearMonthDay
HOST=`/bin/hostname`
TAR=/bin/tar
TAROPTIONS="c"
SSH=/usr/bin/ssh
CAT=/bin/cat
GZIP=/usr/bin/gzip
MAIL=/usr/bin/mail

REMOTEFILE="backup_$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
$TAR $TAROPTIONS $BACKUPFILES | $GZIP | $SSH $REMOTEUSER\\@$REMOTE "cat > $REMOTEDIR$REMOTEFILE"
else
$CAT $MAILTO | while read line
do
$MAIL $line -s $SUBJECT < $ERROR
done
fi