#!/bin/bash


#+++++++++++++++++++++++++++++++++++++++++++++++++++
# eSales Media Backup Script
#
# Author: Benjamin Roth
# Version: 18.0.3
#+++++++++++++++++++++++++++++++++++++++++++++++++++


if [ ! $1 -a $2 -a $3 ]
then
	echo "Wrong parameter count."
	exit 1
fi

#####################
#     PARAMETER     #
#####################
SERVER=`echo $1 | awk -F:: '{ print $2 }' | awk -F: '{ print $1 }'`
PORT=`echo $1 | awk -F:: '{ print $2 }' | awk -F: '{ print $2 }'`
DATABASE=`echo $1 | awk -F:: '{ print $3 }'` 
USER=`echo $1 | awk -F:: '{ print $4 }'` 
PASSWORD=`echo $1 | awk -F:: '{ print $5 }'`
SOCKET=`echo $1 | awk -F:: '{ print $6 }'`

TARGETDIR=$2
TSTAMP=`date +%Y%m%d`
JOBNAME=$3


###################
#     BACKUP      #
###################
if [ -d $TARGETDIR ]
then
	# Set Port
	if [ "$PORT" = "" -o "$PORT" = "0" ]
	then
		PORT=3306
	fi
	# Check for existing backup file
	if [ -f "${TARGETDIR}${JOBNAME}_${TSTAMP}.sql" ]
	then
		suffix=2
		while [ -f "${TARGETDIR}${JOBNAME}_${TSTAMP}_${suffix}.sql" ]
		do 
			suffix=`expr $suffix + 1`
		done
		BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}_${suffix}.sql"
	else
		BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}.sql"
	fi

	if [ "$SOCKET" != "" ]
	then
		#mysqldump -n -B $DATABASE -u $USER -p${PASSWORD} -S $SOCKET > $BACKUPFILE 2> ${BACKUPFILE}.err
		mysqldump -n -u $USER -p${PASSWORD} -S $SOCKET -h $SERVER $DATABASE > $BACKUPFILE 2> ${BACKUPFILE}.err
	else
		#mysqldump -n -B $DATABASE -u $USER -p${PASSWORD} -P $PORT > $BACKUPFILE 2> ${BACKUPFILE}.err
		mysqldump -n -u $USER -p${PASSWORD} -P $PORT -h $SERVER $DATABASE > $BACKUPFILE 2> ${BACKUPFILE}.err
	fi

	if [ $? -eq 0 ]
	then
		echo Dump $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