All pastes #771958 Raw Edit

backupscript

public text v1 · immutable
·published 2007-11-13 12:27 UTC
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";