Simple backup using revision control (Linux)

Previously I’ve used scripts with static paths to create backups, switching to revision control simplified things a lot. Combine with cron and you have a pretty powerful backup system.

I use this to backup global and user config files (/etc, ~/.config etc)

Install a revision control application

There are a lot to choose from (CVS, SVN, BZR, GIT etc.). Pick one and emerge. I strongly recommend GIT (for any purpose). In this example BZR is used, because I haven’t updated it yet.

Set up a cron-job

In wixie cron add a file called /etc/cron.daily/backup and make it executable. This will create a daily backup routine. Here is my script. It exports the current revision to a bzipped archive on a USB-stick (if mounted) with GPG encryption.

CURRENT_DATE=`date +"%d-%m-%y"`
DESTINATION="/media/backup-pin"
BZR="/"
TAR="$DESTINATION/backup-$CURRENT_DATE.tar.bz2"
PGP_ID="YOUR_ID_HERE"

if [ -d "$DESTINATION" ]; then # Only exists when mounted
   bzr export $TAR $BZR
   if [ $? -eq 0 ]; then
     gpg -e -r "$PGP_ID" $TAR
     if [ $? -eq 0 ]; then
       rm -f $TAR # Remove temporary file
     fi
   fi
fi

Add files and file filters

In /.bzrignore (.gitignore etc) add “*” so you ignore all files except those you manually add.

Advertisements

About this entry