Backup server config with a repository

Have you ever modified a batch of your awesome server config files just to find that nothing works any more? are you keeping your server options on a paper block or on another machine? go the easy way and backup all of your changes for the foreseeable future!

Existing tools

The easiest option is to use etckeeper . etckeeper allows /etc to be stored in a git, mercurial, darcs, or bzr repository. It hooks into apt (and other package managers including yum and pacman-g2) to automatically commit changes made to /etc during package upgrades. It tracks file metadata that revison control systems do not normally support, but that is important for /etc, such as permissions of /etc/shadow. etckeeper it’s packaged in Debian, Ubuntu, Fedora, etc.

for the diy-ers: with git

If you want to feel the bolts and cogs, here is an easy way of doing this with git awesomeness:

cd /etc
git init
git add hostname
git commit -m "Initial commit." hostname
git branch stock  //for stock config
git branch play   //for playing config

//one example of use: add a config to the stock branch
git checkout stock
apt-get install squid
git add squid/squid.conf
git commit -m "Adding stock config file." squid/squid.conf
git checkout master

//other example of use: play with configs
git checkout play
git commit -m "Partially finished experiment." squid/squid.conf
git checkout master
git merge play // when the experiment is working and we want to keep it

observations:

  • this can be extended to the whole /. git should just work with binary files, see the chapter of this [book][book].

  • without configuring setgitperms, git does not record filesystem thingies:

    • file groups

    • file owners

    • file permissions (other than “is this executable”)

    • extended attributes

other options could be: bup rdiff-backup

Sources:

https://joeyh.name/code/etckeeper/

https://anuradha.sayura.net/2010/01/using-git-to-manage-config-files.html

https://serverfault.com/questions/5410/using-revision-control-for-server-configuration-files

https://serverfault.com/questions/341199/git-as-a-backup-tool-am-i-a-silly-person

Víctor Cuadrado Juan

I'm Víctor Cuadrado Juan, a developer and FOSS enthusiast, currently living in Germany. These days I spend most of my time as one of Kubewarden's maintainers, a CNCF project, and contributing to Sigstore Rust libraries from time to time. I started my foray in Linux with Debian, where I also maintained some packages. I'm a firm supporter of libre software; it rescued my love for computer technology as a tool for humanity. Feel free to waste your precious time around here, or to contact me.