Archive for the ‘svn’ Category
Sauvegarde incrémental du "/etc"
En discutant avec des administrateurs système au travail. J’ai pu remarquer que souvent des erreurs de configuration pourraient être simplement évitées en utilisant un gestionnaire de contrôle de version (VCS). Et de faites, il y a quelque temps que j’ai développé un script bash / cron pour faire ce travail. Mais il comporte plusieurs défauts tels que l’utilisation intensive des particularités du système d’exploitation que j’utilise présentement, c’est-à-dire Gentoo Linux. Mais bon il fonctionne très bien pour moi.
#!/bin/sh BACKUPNAME="etc-backup" LOGFILE="/var/log/${BACKUPNAME}.log" SVNDIR="/var/tmp/${BACKUPNAME}" SVNBASEDIR="/var/svn" SVNURL="file://${SVNBASEDIR}/${BACKUPNAME}" TARGETDIR="/etc" if [[ ! -d $SVNDIR ]]; then svnadmin create ${SVNBASEDIR}/${BACKUPNAME} >> ${LOGFILE} svn co ${SVNURL} ${SVNDIR} >> ${LOGFILE} fi cfg-update -ua >> ${LOGFILE}rsync -a --exclude='*.svn*' ${TARGETDIR}/ ${SVNDIR}/ cd ${SVNDIR} # be sure every thing is clean and safe svn cleanup >> ${LOGFILE} # be sure every thing is up to date svn update >> ${LOGFILE} FILEINCONFLICT=$( svn status | grep "C " | cut -c 3-) for file in ${FILEINCONFLICT} do svn revert ${file} >> ${LOGFILE} done FILETOADD=$( svn status | grep "? " | cut -c 3- ) for file in ${FILETOADD} do if [[ -e $file ]]; then svn add --quiet ${file} >> ${LOGFILE} fi done FILETODEL=$( svn status | grep "! " | cut -c 3- ) for file in ${FILETODEL} do svn rm --quiet ${file} >> ${LOGFILE} done svn commit -m "backup of $(date)" >> ${LOGFILE}
Pour les ceux qui n’aiment pas faire l’utilisation de subversion. On pourrait simplement porté le script vers git ou bazaar. S’il y a des demandes, je suis prèt à faire la modification.
Je suggère aussi l’utilisation du projet etc-keeper. En faites, probablement que je ferai un peu de travail pour un support Gentoo, le projet semble très intéressant. Et je suis aussi sûr qu’une intégration avec Bcfg2 / Puppet pourrait être gagnante.