Saturday, August 1, 2009

Git your configs backed up

Configuration files of integration and test servers are often accessible by all team members. This is a good thing, as changes to configuration can be made quickly without holding up the test process while having to wait for a system administrator to make the necessary changes.

But what I have often found is that the same servers seldom have proper backups of the important configuration files. I remember getting a lot of resistance from team members a few years ago when I suggested to use RCS to version control these files. RCS was not widely known and many found the syntax awkward, or at least hard to remember. But when I on top of this suggested to copy the configuration file tree to a disk on another server using rsync (to avoid the hassle of setting up a tape backup), I was sure to see my suggestion getting ignored.

Nowadays, git will easily perform both the version control task and the copy-to-remote-disk tasks. I use it for all my apache configuration files for example. One of the servers I administer acts as a proxy for several web applications that each are have very different virtual server configurations. With a version control for the entire tree in place it feels very relaxing making changes to individual applications when I know I can always roll back, should I mess up.

From my server with a real taped backup system in place I simply git pull my various git repositories using cron...and sleep well, knowing all my configuration changes are version controlled and backed up on tape.


  1. Björn WennerströmNovember 3, 2009 at 6:25 PM

    Did you consider using Mercurial? If so, may I ask why you chose git?

  2. No, I haven't considered using Mercurial. The choice of git was the most convenient for me as I use it daily.

    When developing, I like the how easy it is to change the history when using git. But those features have no bearing in this context. I'm sure Mercurial would do equally well.