This is a script to make rotating backups for mysql.
Create a file called mysqlbackup.scpt
Paste the following in the file:
Then, on the server, type the following:
Then edit the crontab (sudo crontab -e) at whatever schedule you wish with the following command
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.
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.