#!/bin/bash if [ ! $1 -a $2 -a $3 ] then echo "Wrong parameter count." exit 1 fi ##################### # PARAMETER # ##################### TARGETDIR=$2 SRCPATH=`echo $1 | awk -F:: '{ print $2 }'` SRCDIR=`basename "${SRCPATH}"` SRCPARENT=`dirname "${SRCPATH}"` EXCLUDES=`echo $1 | awk -F:: '{ print $3 }'` TSTAMP=`date +%Y%m%d` JOBNAME=$3 ################### # BACKUP # ################### if [ -d $SRCPATH -a -d $TARGETDIR ] then # Check for existing backup file if [ -f "${TARGETDIR}${JOBNAME}_${TSTAMP}.tgz" ] then suffix=2 while [ -f "${TARGETDIR}${JOBNAME}_${TSTAMP}_${suffix}.tgz" ] do suffix=`expr $suffix + 1` done BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}_${suffix}.tgz" else BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}.tgz" fi tar -czf ${BACKUPFILE} --ignore-failed-read --warning=file-changed --directory ${SRCPARENT} ${SRCDIR} &> /dev/null 2> ${BACKUPFILE}.err if [ $? -eq 0 ] then echo Backup $BACKUPFILE created if [ -f ${BACKUPFILE}.err ] then rm ${BACKUPFILE}.err &> /dev/null fi exit 0 else cat ${BACKUPFILE}.err if [ -f $BACKUPFILE ] then rm $BACKUPFILE &> /dev/null fi if [ -f ${BACKUPFILE}.err ] then rm ${BACKUPFILE}.err &> /dev/null fi exit 1 fi else echo "Check target and source directories!" exit 1 fi