[Objetivo]
========
Instalar y configurar rsnapshot para realizar backups remotos a servidores Linux y Windows.
[A quien va dirigido]
===============
Administradores de sistema y a toda persona que requiera de backups automatizados en un ambiente heterogéneo
[Introducción - Que es Rsnapshot ]
==========================
Rsnapshot es una colección de scripts escritos en Perl que automatizan el proceso de crear copias de seguridad incrementales, su gran ventaja es que permite crear diferentes "snapshots" (capturas de la data) almacenar varios de estos snapshots sin necesidad de usar espacio adicional.
La clave de rsnaphot es que solo copia el contenido que ha cambiado desde el último snapshot.
[Como funciona]
============
Rsnaphot utiliza RSync un conocido y popular programa de sincronización y transferencia de archivos. Rsnaphot se instala en un servidor *nix (1) con suficiente espacio en disco, una vez instalado y configurado, rsnapshot "jalará" la data de los servidores remotos, la belleza de rsnaphot radica en que solo copiará los archivos que han sido modificados y en el backup si el archivo no ha sido modificado solo estará presente una vez, para entender mejor este punto, usemos un ejemplo:
Tenemos un servidor de backup con 200 GB de espacio disponible, también tenemos 2 servidores con 50 GB de data que queremos respaldar en el servidor de backup y deseamos realizar 4 backups diarios rotativos a 7 días (rsnaphot guardará 4 backups diarios + uno diario x 7 días) lo que nos da un total de 11 snapshots, es decir estamos intentando hacer 11 backups de 100 Gb c/u quepan en 200 GB de espacio? Si, con rsnaphot es posible !!
La primera vez que corremos rsnaphot, este hará un backup total y por supuesto ocupará 100Gb, por cada snaphot adicional requerirá apx ~ 3GB (2), por supuesto esto depende de cada servidor, cada snaphot se verá exactamente como un backup completo, el truco está en los
hardlinks cada archivo repetido solo se almacenará una vez.
[Requerimientos]
============
Rsync en el servidor de backup y los servidores a respaldar
Perl (solo en el servidor de backup)
Servidor de backup *nix (2) con suficiente espacio en disco.
[Instalación]
=========
Podemos instalar rsnapshot desde dos formas distintas, rpm, o compilar nuestro propio paquete:
Instalación desde RPM's:
Desde el servidor de backup y como root ejecutamos el siguiente comando:
Código:
rpm -Uvh http://www.rsnapshot.org/downloads/rsnapshot-1.3.0-1.noarch.rpm
Este comando bajará e instalará rsnaphot es un solo comando, ¿fácil no?
Instalación desde archivos fuente:
Desde el servidor de backup y como usuario root, ejecutamos:
Código:
cd /usr/local/src # establecemos la ubicación para descargar el paquete
wget http://www.rsnapshot.org/downloads/rsnapshot-1.3.0.tar.gz # bajamos el paquete
tar xzvf rsnapshot-1.3.0.tar.gz #Descomprimimos con tar
cd rsnapshot-1.3.0 # Cambiamos al directorio de instalación
./configure --sysconfdir=/etc # Configuramos
make install # compilamos e instalamos
cp /etc/rsnapshot.conf.default /etc/rsnapshot.conf # copiamos el archivo de configuración
Listo !!! ya hemos instalado rsnapshot.
[Configuración de rsnaphot]
rsnaphot incluye un archivo de configuración, bastante sencillo de entender, solo hay que tener una precaución especial todos los elementos deben estar separados por TABULADORES no por espacios.
Ahora vamos a configurar rsnapshot:
Con nuestro editor de texto favorito editamos el archivo /etc/rsnaphot.conf, la mayoría de las opciones se pueden dejar por defecto, sin embargo aquí comentaremos las más importantes:
Código:
snapshot_root /.snapshots/
Es la ubicación en donde se almacenarán los backups, ejemplo:
snapshot_root /backup/ # es obligatorio el "/" inicial y final
Código:
interval hourly 6
interval daily 7
interval weekly 4
#interval monthly 3
Configura los intervalos de almacenamiento, en este ejemplo rsnaphot guardará 6 copias diarias, 7 copias diarias (una cada día) 4 copia semanales (una cada semana)
Note que no guardará copias mensuales porque se ha comentado la línea, configure sus intervalos de acuerdo a sus necesidades, pero siempre respetando el orden de menor a mayor, es decir del menor intervalo de tiempo al mayor (hourly, daily, weekly y monthly)
Código:
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
# EXAMPLE.COM
#backup_script /bin/date "+ backup of example.com started at %c" unused1
#backup root@example.com:/home/ example.com/ +rsync_long_args=--bwlimit=16,exclude=core
#backup root@example.com:/etc/ example.com/ exclude=mtab,exclude=core
#backup_script ssh root@example.com "mysqldump -A > /var/db/dump/mysql.sql"
#backup root@example.com:/var/db/dump/ example.com/
#backup_script /bin/date "+ backup of example.com ended at %c" unused2
En esta sección, configuraremos nuestros backups y directorios donde se guardaran, el formato es el siguiente:
backup [origen] [destino]
Ejemplo:
backup
root@example.com:/home /example.com/
En este caso haremos un backup de directorio /home ubicado en el servidor example.com al cual ingresaremos como usuario root (por supuesto requerimos los permisos necesarios que veremos más adelante)
Podemos añadir tantas líneas backup [origen] [destino] como necesitemos
Recuerde que todos los elementos deben estar separados por tabuladores.
Grabamos los cambios y verificamos que la sintaxis de nuestro archivo de configuración está correcta
Código:
rsnapshot configtest
Si todo está correcto seguimos con el siguiente paso, sino volvemos a editar y corregimos los errores (les comenté que no deben dejar espacios entre los elementos sino tabuladores?)
Para poder ingresar a los servidores remotos, sin necesidad de utilizar password, es necesario que configuremos keys. (esto lo veremos en otro tutorial)
[Automatización de backups]
Para que todo sea verdaderamente automático, utilizaremos las tareas cron
crontab - e e introducimos algo como
Código:
0 3 * * * /usr/bin/rsnapshot hourly
0 7 * * * /usr/bin/rsnapshot daily
0 16 * * 0 /usr/bin/rsnapshot weekly
0 23 1 * * /usr/bin/rsnapshot monthly
Deberás configurarlo de acuerdo a tus necesidades y a los intervalos que has seleccionando en rsnaphot
[Probamos]
rsnapshot incluye una útil herramienta para comprobar el resultado
rsnapshot -t hourly no genera el backup, solo nos muestra los comandos que usará, el truco lo logramos con el parámetro -t
[Tips para Windows]
Podemos hacer que rsnaphot haga copias de seguridad de servidores Windows, para ello solo debemos instalar cwRsync un Rsync server portado para Windows, podemos descargarlo
desde aquí
Luego de instalado, editamos el archivo rsyncd.conf ubicado en el directorio donde instalamos cwRsync y lo ajustamos de la siguiente manera:
Código:
use chroot = false
strict modes = false
hosts allow = [IP del servidor de backup sin corchetes]
log file = rsyncd.log
pid file = rsyncd.pid
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[c]
path = /cygdrive/c
read only = false
transfer logging = yes
[d]
path = /cygdrive/d
read only = false
transfer logging = yes
Ahora solo tenemos que configurar en /etc/rsnapshot.conf la orden de backup a windows, algo como:
Código:
backup ip_windows::c/WINDOWS /windows/
En este ejemplo haremos un backup del directorio windows, ubicado en el servidor ip_windows y lo guardaremos en el directorio /rsnapshot_root/windows del servidor de backup
NOTE los [::] antes de la letra de la unidad
#################################################
(1) Técnicamente puede ser instalado en Windows debido a que solo requiere de Perl, Rsync (disponibles para Win) y algunas herramientas standard de Linux, también disponibles para Windows vía Cygwin.
(2) En promedio los archivos que cambian en un servidor web son aproximadamente el 3% de la data almacenada.
################################################
Autor: Guillermo Calvo