This is a script to make rotating backups for mysql.

Create a file called mysqlbackup.scpt

Paste the following in the file:


#!/bin/sh

# List of databases to be backed up separated by space
dblist="mysql"

# Directory for backups
backupdir=/home/user/backup/mysql

# Number of versions to keep
numversions=4

# Full path for MySQL hotcopy command
hotcopycmd=/usr/bin/mysqlhotcopy

# MySQL Username and password
userpassword=" --user=root --password=blabla"

# Create directory if needed
mkdir -p ${backupdir}
if [ ! -d ${backupdir} ] 
then
echo "Invalid directory: ${backupdir}"
exit 1
fi

# Hotcopy begins here
echo "Hotcopying MySQL Databases..."
RC=0
for database in $dblist
do
echo "Hotcopying $database ..."
$hotcopycmd $userpassword $database ${backupdir}
RC=$?
if [ $RC -gt 0 ]
then
break;
fi

# Rollover the backup directories
i=$numversions
mv ${backupdir}/${database} ${backupdir}/${database}.0 2> /dev/null
rm -fr ${backupdir}/${database}.$i 2> /dev/null
while [ $i -gt 0 ]
do
mv ${backupdir}/${database}.`expr $i - 1` ${backupdir}/${database}.$i 2> /dev/null
i=`expr $i - 1`
done
done

if [ $RC -gt 0 ]
then
echo "MySQL Hotcopy failed!"
exit $RC 
else
# Hotcopy is complete. List the backup versions!
ls -l ${backupdir}
echo "MySQL Hotcopy is complete!"
fi
exit 0

Then, on the server, type the following:

chmod +x mysqlbackup.scpt

Then edit the crontab (sudo crontab -e) at whatever schedule you wish with the following command

x x x x x /absolute/path/mysqlbackup.scpt

Change the x's to whatever time fits for your needs.
Also be sure to change the script to meet the needs for the specific database.