Herramientas de usuario

Herramientas del sitio


backup

Copias de seguridad locales

Para realizar las copias de seguridad locales usamos rsnapshot.

Este script genera las copias de seguridad en /var/backups, se encarga de rotar las copias y de minimizar el uso de espacio en disco empleando enlaces duros para todos los archivos que no cambien de una copia a otra.

Su archivo de configuración /etc/rsnapshot.conf está profusamente comentado. A continuación se reseña sólo los cambios que se han realizado a la versión instalada por defecto en Debian:

/etc/rsnapshot.conf
###########################
# SNAPSHOT ROOT DIRECTORY #
###########################
 
snapshot_root   /var/backups/
 
 
#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################
 
retain      diaria  7
retain      mensual 3
 
 
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
 
# LOCALHOST
backup          /root/                  localhost/
backup          /home/                  localhost/
backup          /var/www/               localhost/
backup          /var/git/               localhost/
backup          /var/spool/cron/        localhost/
backup          /habitat/               localhost/
backup          /etc/                   localhost/
backup          /usr/local/             localhost/
backup_script   /root/bin/dpkgbackup    localhost/dpkg/
backup_script   /root/bin/mysqlbackup   localhost/mysql/

Como puede observarse añadir que se respalden nuevos directorios es tan sencillo como agregar una directiva backup a la configuración en la sección BACKUP POINT/SCRIPTS.

También soporta la ejecución de scripts. Para la realización de los mismos hay que tener en cuenta que copiara en el destino los archivos generados en donde se ejecute el script, no deben usarse rutas absolutas.

Hemos definido dos scripts:

  • /root/bin/dpkgbackup guarda la selección de paquetes instalados en el sistema
    /root/bin/dpkgbackup
    #!/bin/bash
    /usr/bin/dpkg --get-selections > dpkg.list
  • /root/bin/mysqlbackup guarda una copia comprimida con gzip de todas las bases de datos MySQl, pero cada una en un archivo separado.
    /root/bin/mysqlbackup
    #!/bin/bash
     
    # Requiere tener configurado el acceso a MySQL en ~/.my.cnf
    if [ ! -f ~/.my.cnf ]; then
    	echo "ERROR: No existe ~/.my.cnf"
    	exit 1
    fi
     
    # Para usar junto con rsnapshot los ficheros generados deben
    # estar en el directorio actual. Por ello el valor de DESTINO
    # por defecto es .
    DESTINO=.
    if [ $# -eq 1 ]; then
    	DESTINO="$1"
    fi
     
    if [ $# -gt 1 ]; then
    	echo "ERROR: Número de argumentos incorrecto."
    	exit 1
    fi
     
    if [ ! -d $DESTINO ]; then
    	echo "ERROR: ${DESTINO} no es un directorio"
    	exit 1
    fi
     
    BBDD=$(mysql --skip-column-name --silent -e 'SHOW DATABASES;')
     
    for BD in $BBDD
    do
    	#echo "Exportando $BD"
    	mysqldump --single-transaction ${BD} | gzip -c -9 > ${DESTINO}/${BD}.gz 
    done

Finalmente podemos ejecutar rsnapshot manualmente en cualquier momento invocando alguno de los dos intervalos que hemos definido en el archivo de configuración:

/usr/bin/rsnapshot diaria

ó

/usr/bin/rsnapshot mensual

Pero lo interesante es dejar automatizada la tarea añadiendolas al cron de root. Actualmente estas líneas existen pero están comentadas:

## Copias de seguridad
## -------------------
## Descomentar cuando se quieran activar
#00 4 * * * 	/usr/bin/rsnapshot diaria  > /dev/null 2>&1
#00 5 1 * * 	/usr/bin/rsnapshot mensual > /dev/null 2>&1
backup.txt · Última modificación: 2013/09/05 09:03 por root