Linux backup
Today I would like to share an old backup script that has been serving me for three years. It is not entirely the product of my brain : I have modified a script that I found on the internet that was created back in the year 2000.
The script is pretty well commented and self explanatory : it creates a full backup on Sundays and an incremental backup the other days. Every beginning of month it creates a full backup.
#!/bin/bash # full and incremental backup script # created 07 February 2000 # Based on a script by Daniel O'Callaghan <danny@freebsd.org> # and modified by Gerhard Mourani <gmourani@videotron.ca> # modified by Marco Ferretti <marco.ferretti@gmail.com> on 16 Aug 2008 #Change the 5 variables below to fit your computer/backup #COMPUTER=server # name of this computer PROJECTS="/home/marco/Projects/Workspaces /home/marco/Projects/Nitro /home/marco/Projects/Readytec" # projects directory CVS="/home/marco/dev /home/cvs" # CVS directory DOCUMENTS="/etc /home/marco/Documents" # documents directory MAIL="/home/marco/.mozilla-thunderbird" # email USERS="/home/bruno " # users to fully backup DIRECTORIES="$DOCUMENTS $USERS $PROJECTS $MAIL $CVS" # directoris that will be passed to tar BACKUPDIR=/media/backup-disk/backup/archives # where to store the backups TIMEDIR=/media/backup-disk/backup/log # where to store time of full backup TMPFILE=/tmp/backup.local.tmp TAR=/bin/tar # name and locaction of tar LOGFILE=/media/backup-disk/backup/log/backup.log # log file #You should not have to change anything below here PATH=/usr/local/bin:/usr/bin:/bin DOW=`date +%a` # Day of the week e.g. Mon DOM=`date +%d` # Date of the Month e.g. 27 DM=`date +%d%b` # Date and Month e.g. 27Sep # On the 1st of the month a permanet full backup is made # Every Sunday a full backup is made - overwriting last Sundays backup # The rest of the time an incremental backup is made. Each incremental # backup overwrites last weeks incremental backup of the same name. # # if NEWER = "", then tar backs up all files in the directories # otherwise it backs up files newer than the NEWER date. NEWER # gets it date from the file written every Sunday. echo "`date` Starting backup backup script" > $LOGFILE # Monthly full backup if [ $DOM = "01" ]; then echo "`date +%d-%b-%y` Starting montly full backup" >> $LOGFILE NEWER="" # $TAR $NEWER -cfj $BACKUPDIR/$COMPUTER-$DM.tar.bz2 $DIRECTORIES # $TAR $NEWER -cjf $TMPFILE $DIRECTORIES #Version that creates one big file # $TAR $NEWER -cjf $BACKUPDIR/monthly/$DM-full.tar.bz2 $DIRECTORIES #Version that splits the file in 4Gb parts (DVD burn ready $TAR $NEWER cjf - $DIRECTORIES | split --bytes=4G -d - $BACKUPDIR/monthly/$DM-full.tar.bz2_ #Remove the big file ... rm BACKUPDIR/monthly/$DM-full.tar.bz2 # cp $TMPFILE $BACKUPDIR/monthly/$DM-full.tar.bz2 fi # Weekly full backup if [ $DOW = "Sun" ]; then echo "`date +%d-%b-%y` Starting weekly full backup" >> $LOGFILE NEWER="" NOW=`date +%d-%b` # Update full backup date # echo $NOW > $TIMEDIR/$COMPUTER-full-date # $TAR $NEWER -cjf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES echo $NOW > $TIMEDIR/full-date $TAR $NEWER -cjf $BACKUPDIR/weekly/$DOW-full.tar.bz2 $DIRECTORIES # $TAR $NEWER -cjf $TMPFILE $DIRECTORIES # cp $TMPFILE $BACKUPDIR/weekly/$DOW-full.tar.bz2 # Make incremental backup - overwrite last weeks else # Get date of last full backup # NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`" # $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES echo "`date +%d-%b-%y` Starting incremental backup" >> $LOGFILE NEWER="--newer `cat $TIMEDIR/full-date`" $TAR $NEWER -cjf $BACKUPDIR/weekly/$DOW.tar.bz2 $DIRECTORIES # $TAR $NEWER -cjf $TMPFILE $DIRECTORIES # cp $TMPFILE $BACKUPDIR/weekly/$DOW.tar.bz2 fi echo "`date` end of backup backup script" >> $LOGFILE
Recent Comments