#!/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 --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