Backing up strategyPosted on April 19th, 2013 1 comment
I am tired to intervene with routine backups, so I wanted to automate everything. This is accomplished by running cron jobs with a daemon called “crontab” .
1. each day run the following three programs.
1a: this backs all the web and user related data at /usr/home
COMPUTER=I-rock # name of this computer
DIRECTORIES=”/home/” # directoris to backup
BACKUPDIR=/backup/ # where to store the backups
TAR=/bin/tar # name and locaction of tar
DOW=`date +%a` # Day of the week e.g. Mon
# Weekly full backup when it is Sunday
if [ $DOW = “Sun” ]; then
$TAR $NEWER -cpf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
# other days, incremental only, only changes since Sun day of the week is backed up.
$TAR $NEWER I-rock-Sun.tar -cpf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
1b: back up mysql database once a day and name it the day of week (*-Mon, *-Tue…etc).
/usr/local/bin/mysqldump -u root -ppassword–all-databases >current.sql
mv current.sql.gz Mysql-`date +%a`.sql.gz
1c: use rsync once a day to update all the newly backed files to a backup server.
2a: run this script once a week Sat night, to move a full web backup (Sun), plus the last incremental (Sat), and a mysql dump, plus the named files, to a directory named for the number of week for that year.
mkdir week`date +%U` (create a directory called week-23, for 2nd week in June)
mv Mysql-Sat.sql.gz week`date +%U` (move Saturday’s database backup to week24, if it is the 24th week)
mv Named-master-Sat.tar week`date +%U` (move Named db files also)
mv I-rock-Sun.tar week`date +%U` (move Sunday’s full backup, 6 days ago)
mv I-rock-Sat.tar week`date +%U` (move Saturday, the most recent incremental)
2b: on backup server, restore the databases once a week. Delay it for 5 days on purpose, in case something goes wrong with the database dump. Restore on Saturday, the Monday’s mysql backup.
rm current.sql #remove last week’s sql file
mv Mysql-Mon.sql.gz current.sql.gz #take monday and rename it
gunzip current.sql.gz #unzip it
/usr/local/bin/mysql -h localhost -u root -ppassword <current.sql #load it to mysql
So in the end, I have a snapshot of each week’s web, named db files, and mysql database saved. It is possible that I will run out of HD space after 30 weeks. so I will need to come up with a script to delete files that are more than 25 weeks old.
I may have to periodically move files to a third server.. just in case a fire in the building destroys both the main and backup servers (I know, this wont happen!).
Thanks this can help me backup my server to another server.Nice guide good work
Leave a reply