systemadmin.es » Backup » Backup de los cambios de configuración

Backup de los cambios de configuración

Si no se dispone de una herramienta de control de cambios centralizada para los ficheros de configuración se puede usar el siguiente script para que realice backups automáticos de las configuraciones de los daemons.

Mediante el nombre del fichero ejecutado identifica el daemon al que va a realizar backups:

#!/bin/bash

TYPE=$(echo $0 | sed 's/\./ /g' | awk '{ print $NF }')

case "$TYPE" in
        "mysql")
                BACKFILES=/etc/my.cnf
                ;;
        "apache")
                BACKFILES=/usr/local/apache22/conf
                ;;
        "sphinx")
                BACKFILES=/usr/local/etc/sphinx.conf
                ;;
        "nagios")
                BACKFILES=/usr/local/etc/nagios
                EXTRABACKFILES=/usr/local/etc/nagios.cfg
                ;;
        "bacula")
                BACKFILES=/etc/bacula
                ;;
        "syslog-ng")
                BACKFILES=/etc/syslog-ng
                ;;
        "qmail")
                BACKFILES=/var/qmail/control
                ;;
        "cron")
                BACKFILES=/var/spool/cron
                ;;
        "named")
                BACKFILES=/var/named
                ;;
        *)
                echo ERROR: $TYPE no soportado
                exit 1
                ;;
esac

HOMEBACKUP=/var/backup.conf/$TYPE

mkdir -p $HOMEBACKUP

NEXTFILE=$HOMEBACKUP/config.${TYPE}.$(date +%Y%m%d%H).tar.bz2

LAST=$(ls -rt $HOMEBACKUP| tail -n1)

(cd $(dirname $BACKFILES); tar cjf $NEXTFILE $(basename $BACKFILES) $EXTRABACKFILES ) 2>&1 | grep -v  "tar: Removing leading"

if [ -z "$LAST" ];
then
        echo "No hay fichero previo"
        exit 0;
fi

diff $NEXTFILE $HOMEBACKUP/$LAST >/dev/null

if [ $? -eq 0 ];
then
        rm $HOMEBACKUP/$LAST
fi

Dicho script permite configurar los paths de los daemons mediante las variables BACKFILES y EXTRABACKFILES.

Mediante simples enlaces podemos definir los backups según la máquina. Suponiendo que hemos creado el script con el nombre “/usr/local/bin/backup.config.generico“, definimos los enlaces con ln:

ln -s /usr/local/bin/backup.config.generico /usr/local/bin/backup.config.syslog-ng
ln -s /usr/local/bin/backup.config.generico /usr/local/bin/backup.config.qmail
ln -s /usr/local/bin/backup.config.generico /usr/local/bin/backup.config.bacula

A continuación deberemos ejecutarlo periódicamente mediante el cron como máximo una vez cada hora:

#backups de configuracions
15 * * * * /usr/local/bin/backup.config.bacula
30 * * * * /usr/local/bin/backup.config.syslog-ng
45 * * * * /usr/local/bin/backup.config.qmail

Dicho script compara el backup con el anterior, eliminando el más antiguo si son iguales. De esta manera evitaremos saturar el disco con configuraciones repetidas.

Relacionados

Imprimir Imprimir

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>