rendered paste body#!/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=<SERVER>;
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";