Backup script example, Auto Make directory, Prepare date file name, dump mySQL, Auto rename old backup files with index code, rsync data

#!/bin/bash
basedir=/var/backup/store
sqldir=$basedir/sql
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C

for dirs in $basedir
do
        [ ! -d "$dirs" ] && mkdir -p $dirs
done

for dirs in $sqldir
do
        [ ! -d "$dirs" ] && mkdir -p $dirs
done



param1=$(date +%Y-%m-%d-%H-%M-%S)

# Database Backup
sqlusername=root
sqlpassword=Z2PG82SMtQzD
mysqldump=/usr/bin/mysqldump
bwlimit=--bwlimit=100K
#bwlimit=

sqldbname=dbispconfig
sqlsavetarget=$sqldir/$sqldbname.sql
rm -rf $sqlsavetarget.7
mv $sqlsavetarget.6 $sqlsavetarget.7
mv $sqlsavetarget.5 $sqlsavetarget.6
mv $sqlsavetarget.4 $sqlsavetarget.5
mv $sqlsavetarget.3 $sqlsavetarget.4
mv $sqlsavetarget.2 $sqlsavetarget.3
mv $sqlsavetarget.1 $sqlsavetarget.2
mv $sqlsavetarget $sqlsavetarget.1
$mysqldump -u $sqlusername -p$sqlpassword --skip-lock-tables -R $sqldbname > $sqlsavetarget

/usr/bin/rsync -ah $bwlimit --delete /etc $basedir
/usr/bin/rsync -ah $bwlimit --delete /usr/local/ispconfig $basedir

Prevent duplicate shell script executions

Method #1, pidof

I have a /var/backup/systemBackup.sh for system backup.

edit /var/backup/runsystemBackup.sh

#!/bin/bash

if pidof -x "systemBackup.sh" >/dev/null; then
        echo "Process already running"
        exit 0
fi
/var/backup/systemBackup.sh  > /dev/null &

try run /var/backup/runsystemBackup.sh

Method #2, lock file

I have a /var/backup/systemBackup.sh for system backup.

edit /var/backup/runsystemBackup.sh

#!/bin/sh

lockdir=/tmp
BACKUP=/var/backup/systemBackup.sh
LOGGER=/usr/bin/logger

if [ ! -f /$lockdir/systemBackup.sh ]; then
        touch $lockdir/systemBackup.sh

        $BACKUP
        rm $lockdir/systemBackup.sh

else
        echo "systemBackup.sh already running"
        $LOGGER -d -t SYSTEM_Backup "systemBackup.sh already running"
fi

try run /var/backup/runsystemBackup.sh

Method #3, flock with cron job

# m h dom mon dow user  command
5 0  *  *  * flock -w 0 /tmp/sqlbackup.sh.lock /var/backup/systemBackup.sh