I regard backup as a very important matter. Because one of the certainties in life is this :
However, with so many computers in our care, we need a way to make it automatic. Otherwise, it will simply take too much time.
Thankfully, this is very easy to do in UNIX / Linux computers.
We have several kind of backup scripts. All of them are quite simple, but essential. Nobody should be without them.
Below you can find a backup script we use to backup MySQL database for our clients. Basically, this is how we use it :
- Modify the script to archive for the time range that we’d like.
The script can archive the backup from 1 week to unlimited. Just remark out the time range that you don’t need (by putting the “#” character in the first column of the particular row). - Make sure we can run mysqldump automatically / with no user intervention.
This can be done easily by creating a file name ~/.my.cnf - Setup the backup to run automatically via cron
- Routinely backup the backup to other servers.
Yes, there is no such thing as “too much backup”.
Without further ado, here is the script : backup-archive-mysql.sh
#!/bin/bash
### Please change the variables below to suit you
targetdir="/home/myuser/mybackup"
targetfile="db-mydb"
targetsuffix=".mysql"
userdb="root"
database="mydb"
#################################
bcp="/bin/cp"
bmysqldump="/usr/bin/mysqldump"
################################## start backup now
### Archive : 1 week
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%A`$targetsuffix
### Archive : 2 weeks
$bcp $targetdir/$targetfile-`date +%A`$targetsuffix $targetdir/$targetfile-last-`date +%A`$targetsuffix
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%A`$targetsuffix
### Archive : 1 month
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%d`$targetsuffix
### Archive : 2 months
$bcp $targetdir/$targetfile-`date +%d`$targetsuffix $targetdir/$targetfile-last-`date +%d`$targetsuffix
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%d`$targetsuffix
### Archive : 1 year
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%m%d`$targetsuffix
### Archive : 2 years
$bcp $targetdir/$targetfile-`date +%m%d`$targetsuffix $targetdir/$targetfile-last-`date +%m%d`$targetsuffix
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%m%d`.mysql
### No Archive
### WARNING: always monitor your free disk space, or the following line may consume them all
$bmysqldump -u $userdb $database > $targetdir/$targetfile-`date +%Y%m%d`$targetsuffix
Here is a sample of ~/.my.cnf; if this file exist, then various MySQL tools & software will be able to run with no intervention.
Of course you’ll need to adjust its user & password :
[client]
user=root
password=mypassword
Hope you’ll find this useful.
I’ll post our other scripts here from time to time as well. Stay tuned.




























