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.