Maintain config-files using subversion

Every sysop might recognize this... I changed a config file some while ago... but what did I change and what is the history of that file. Besides of the changes, I want to have them in a backup :-)

So I decided to setup a config-file repository, where the servers can commit automaticly their changes using SVN over SSH. I use SSH to have no password prompts but certificates. Only the user svn-backup can commit files to the repository. On both server I only checked out the repository-part concerning them.

[root@tank] svn co
svn+ssh://[email protected]/repos/config-files/tank

And in the crontab for the user root, we have the next entry:

45 * * * */usr/local/backup/

And in the svn-backup script we have the next lines:

# Subversion script to backup configfiles
# Written by Pieter de Rijk <pieter -at->


cp -R /usr/local/etc/ $SVN_BACKUP_PATH/usr/local/etc/ > /dev/null 2> /dev/null
cp -R /etc/
$SVN_BACKUP_PATH/etc/ > /dev/null 2> /dev/null
rm -rf $SVN_BACKUP_PATH/usr/local/etc/squid/errors
rm -rf $SVN_BACKUP_PATH/usr/local/etc/squid/icons/*.jpg
rm -rf $SVN_BACKUP_PATH/usr/local/etc/squid/icons/*.gif
/usr/local/bin/svn up > /dev/null 2> /dev/null
for files in "`/usr/local/bin/svn status $SVN_BACKUP_PATH | grep ^?`";
   ADD_FILE=`echo $files | awk '{ print $2 }'`
   if [ ! -z $ADD_FILE ];
     /usr/local/bin/svn add $ADD_FILE
/usr/local/bin/svn commit -m "[`hostname -s`] Config changes `date`"

And when something change I receive a message :-P

Only users in the wheel group can checkout the repositories, but are not allowed to commit :-D