Git based Server Backups

One of the thing I have to do as a System Administrator is run Backups. There are many ways to do Backups the only issue I have is it has to be easy and work. There are many commercial Backup systems from EMC2 to Full QNAP, and even Home based FreeNAS Solutions. I find that a Linux server with a USB Hard drive and git works the best… and here to you can set one up too!

Note all my how-to’s are done with debian so… here we go.

First as with all debian OS’s UPDATE IT!

apt-get update
apt-get upgrade

Next install git and rsync:

apt-get install git rsync

Alright.. Now lets setup a folder to use for the storage of the Backups.

mkdir /backups/

Now edit / and add the following lines:

cd /backups/
# Backup Linux Server 1
rsync -avz –progress –delete /backups/server1/
### Uncomment the next line and Just keep adding servers!
## Backup Linux Server 2
#rsync -avz –progress –delete /backups/server2/
if [ ! -d “.git” ]; then
git init .
git add -A
git commit -m “`date –rfc-3339=seconds`”
git gc

Now chmod it:

chmod 755 /

and now we will need to make a SSH Key for the server.

Run ssh-keygen on your machine, and just hit enter when asked for a password. Next, add the contents of the public key file ( ~/.ssh/ ) into ~/.ssh/authorized_keys on the server you are going to be backing up (the file should be a chmod of 600).


Now you may run the / with



Now just set a cronjob to backup automatically.


There you go a full backup system.  Watch out for the next blog post where we will make a web frontend for git to view the backups.

Tags: ,