#!/bin/bash unset PATH #Pfade zu den UNIX-Kommandos ID=/usr/bin/id; ECHO=/bin/echo; MOUNT=/bin/mount; RM=/bin/rm; MV=/bin/mv; CP=/bin/cp; TOUCH=/bin/touch; RSYNC=/usr/bin/rsync; SSH=/usr/bin/ssh; MKDIR=/bin/mkdir; CAT=/bin/cat; #Backup-Einstellungen HOSTNAME=`/bin/hostname`; BACKUP_SRV=; BACKUP_SRV_USER=root; BACKUP_DIR=/backup/$HOSTNAME; FILES=/root/scripts/include_daily.txt; EXCLUDE=/root/scripts/exclude_daily.txt; # check auf root if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root. Exiting..."; exit; } fi # Check ob remote host hier ist # Make backup directories on remote system if they dont exist $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ ! -d $BACKUP_DIR ] ; then $MKDIR -p $BACKUP_DIR ; fi ;" # rotating on remote system # delete oldest snapshot if it exists $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.4 ] ; then $RM -rf $BACKUP_DIR/daily.4 ; fi ;" # shift the middle backup #$SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.7 ] ; then $MV $BACKUP_DIR/daily.7 $BACKUP_DIR/daily.8 ; fi;" #$SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.6 ] ; then $MV $BACKUP_DIR/daily.6 $BACKUP_DIR/daily.7 ; fi;" #$SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.5 ] ; then $MV $BACKUP_DIR/daily.5 $BACKUP_DIR/daily.6 ; fi;" $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.4 ] ; then $MV $BACKUP_DIR/daily.4 $BACKUP_DIR/daily.5 ; fi;" $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.3 ] ; then $MV $BACKUP_DIR/daily.3 $BACKUP_DIR/daily.4 ; fi;" $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.2 ] ; then $MV $BACKUP_DIR/daily.2 $BACKUP_DIR/daily.3 ; fi;" $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.1 ] ; then $MV $BACKUP_DIR/daily.1 $BACKUP_DIR/daily.2 ; fi;" # hardlink copy of latest snapshot $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ -d $BACKUP_DIR/daily.0 ] ; then $CP -al $BACKUP_DIR/daily.0 $BACKUP_DIR/daily.1 ; fi;" # do the backup for DIRECTORY in `$CAT $FILES`; do $SSH $BACKUP_SRV_USER@$BACKUP_SRV "if [ ! -d $BACKUP_DIR/daily.0/$DIRECTORY ] ; then $MKDIR -p $BACKUP_DIR/daily.0/$DIRECTORY ; fi;" $RSYNC -va --exclude-from="$EXCLUDE" -e $SSH $DIRECTORY $BACKUP_SRV_USER@$BACKUP_SRV:$BACKUP_DIR/daily.0/$DIRECTORY ; done # touch mtime for daily.0 $SSH $BACKUP_SRV_USER@$BACKUP_SRV "$TOUCH $BACKUP_DIR/daily.0";