Copias de seguridad en Ubuntu con rsnapshot

Una forma habitual de realizar copias de seguridad es hacer una copia manual de las carpetas de forma periódica. Con unos conocimientos básicos de herramientas estándar en GNU/Linux puedes hacer que las copias se hagan de forma manual e incluso utilizar herramientas como rsync que pueden hacer que las copias sean más rápidas. Sin embargo, si quieres guardar copias de varias fechas, aparece rápidamente el problema del espacio en disco. Esto puede resolverse realizando copias totales e incrementales, pero entonces la cosa ya se complica. Una forma muy sencilla y potente de realizar copias de seguridad en GNU/Linux es utilizar una herramienta llamada rsnapshot, que utiliza internamente el comando rsync y hace uso de una característica interesante, como son los enlaces duros (hard links), para ahorrar espacio en las copias.

Básicamente, el programa realiza una primera copia y en posteriores copias copia los archivos nuevos y modificados, creando enlaces duros a los archivos que ya existían. De esta manera, cada copia ocupa realmente los archivos nuevos y modificados.

Para instalar la herramienta utilizaremos apt-get.

$ sudo apt-get rsnapshot

El siguiente paso es realizar la configuración, editando el archivo /etc/rsnapshot.conf. Si no dispones de este archivo, puede que quizás tengas uno con el nombre rsnaphot.conf.default, o en cualquier caso, puedes utilizar el que viene con los ejemplos de la herramienta.

$ sudo cp /usr/share/doc/rsnapshot/examples/rsnapshot.conf.default.gz /etc
$ cd /etc
$ sudo gunzip rsnapshot.conf.default.gz
$ sudo cp rsnapshot.conf.default rsnapshot.conf

Lo primero que hay que configurar en el archivo es la ruta donde se guardarán las copias de seguridad, mediante la variable de configuración snapshot_root. Además, si tienes pensado hacer las copias en un dispositivo externo o en una ubicación que montas en el sistema de archivo, conviene que pongas la variable no_create_root a 1.

snapshot_root	/var/cache/rsnapshot/
no_create_root	1

Una vez configurada la ubicación hay que indicar al programa cuantas copias de seguridad deseamos retener. Cada vez que se lanza el programa se le dice qué tipo de copia está realizando (hourly, daily, weekly y monthly), y utiliza el valor de configuración de retención correspondiente para eliminar las copias de ese tipo más antiguas. Así, por ejemplo, un valor de retención de daily de 7, indicaría que la octava vez que se lance una copia daily se eliminen las copias más antiguas, es decir, las del primer día. En mi caso, como no voy a realizar copias horarias, he comentado este valor y he configurado el resto de valores para que guarde las copias diarias de los últimos 7 días, las 4 últimas semanas y las tres últimas mensuales.

#retain         hourly  6
retain          daily   7
retain          weekly  4
retain          monthly 3

A continuación hay que indicar de qué queremos hacer copia de seguridad. En este punto las posibilidades son muchas, podemos hacer copias de otros equipos, utilizar scripts específicos por ejemplo para hacer copias de bases de datos, etc. En este caso vamos a hacer simplemente una copia de la configuración del equipo (/etc) y del contenido de la carpeta /home. Para ello se utiliza la directiva backup, a la que se le indica la carpeta que queremos respaldar y en qué subcarpeta queremos dejarlo. Ten cuidado con las barras al final de las carpetas que indiques, ten en cuenta que siguen el funcionamiento de rsync.

backup  /home/     localhost/
backup  /etc/           localhost/

Uso “localshot/” como carpeta destino, previendo que en algún momento vaya a realizar copia de algún otro equipo, en cuyo caso a las nuevas directivas les asignaría una carpeta diferente.

Podemos también configurar otras variables de configuración, el archivo es bastante autoexplicativo. Si te encuentras con problemas puedes modificar la verbosidad (verbose) y el nivel de log (loglevel).

Una vez configurado puedes comprobar que la configuración es válida de la siguiente manera.

$ sudo rsnapshot configtest
Syntax OK

Si obtienes un Syntax OK es que la configuración es correcta. En caso contrario tocará revisar el archivo siguiendo las indicaciones que te dé la herramienta. Por cierto, ten cuidado con los espacios y los tabuladores, al indicar las directivas backup los valores de las columnas están separados por tabuladores, no por espacios.

Para realizar una primera copia podemos utilizar directamente el comando desde consola indicándole el tipo de copia que queremos hacer. Por ejemplo, para hacer una daily:

$ sudo rsnapshot daily

Como resultado obtendremos que se han creado las carpetas “/daily.0/localhost/home” y “/daily.0/localhost/etc” dentro de “/var/cache/rsnapshot”, y que dentro se han guardado todos los archivos de esas carpetas.

Para lanzar las copias de manera automática utilizaremos cron. El programa viene ya con un archivo de programación de ejemplo. Podemos editarlo y descomentar y modificar las líneas que deseemos. Hay que editar el archivo /etc/cron.d/rsnapshot.

#0 */4		* * *		root	/usr/bin/rsnapshot hourly
30 3  	* * *		root	/usr/bin/rsnapshot daily
0  3  	* * 1		root	/usr/bin/rsnapshot weekly
30 2  	1 * *		root	/usr/bin/rsnapshot monthly

Como en este caso no queremos hacer copias horarias, dejamos comentada esa línea. Descomentamos el resto para que se hagan copias diarias todos los días, semanales cada semana y mensuales cada mes.

De esta manera con cron controlamos cuándo se lanza cada tipo de copia y con la configuración de rsnapshot configuramos cuántas copias hay que mantener de antigüedad.

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

Trackbacks/Pingbacks

  1. Backup de un servidor remoto con rsnapshot y ubuntu sin usar root | EsLoMas.com - 07. Feb, 2013

    […] un post anterior expliqué cómo utilizar rsnapshot para realizar copias de seguridad. En esta ocasión voy a […]