Cómo usar Rsync para respaldar datos de nuestra web

Dificultad: Intermedio
<b>Tiempo de Lectura:</b> 2 minutos

Disponer de respaldos de nuestros datos es totalmente imprescindible, que no quepa duda de ello, porque en caso de que algo salga mal serán nuestra única salvación. Ciertamente existen muchos métodos y herramientas para realizar respaldos, aunque el día de hoy nos enfocaremos en una en particular: rsync.

Cómo usar Rsync para respaldar nuestro sitio

Rsync, que por cierto en breve estará cumpliendo 20 años, es utilizada para realizar respaldos tanto en sistemas Windows como en Linux, aunque por supuesto nosotros nos enfocaremos en este último.
Anteriormente ya hemos visto algunos ejemplos prácticos del uso de rsync, y hoy les dejaremos un script sencillo para realizar backups en forma remota (entre dos servidores).

Para que este script funcione debemos asegurarnos de tener habilitada la conexión entre ambos servers, es decir, desde el server donde correrá rsync tenemos que ser capaces de conectarnos al server que contiene los datos que debemos respaldar. Siguiendo este enlace podrán ver un artículo donde se explica cómo realizar dicha configuración.

El script que verán realiza un copiado de datos de un server a otro y posteriormente envía al usuario un email detallando el contenido que se copió. El código del script, realizado en bash, pueden verlo a continuación:

#!/bin/sh

# Datos de conexión
IP="1.1.1.1"
USUARIO="aquívaelusuario"

#Carpeta local donde guardaremos los respaldos
DESTINO="/ruta/carpeta/destino/"

# Datos a respaldar
SITIOS="/ruta/carpeta/sitios"
BDS="/ruta/bases/de/datos"

# Rsync de respaldo
rsync -avpr -e 'ssh -p 0000' $USUARIO@$IP:$SITIOS $DESTINO
rsync -avpr -e 'ssh -p 0000' $USUARIO@$IP:$BDS $DESTINO

#Informe de respaldos
ls -lah $DESTINO > /root/informe
du -shc $DESTINO* >> /root/informe
cat /root/informe | mail -s "Informe de respaldos" casilla@dominio.com

# Esperamos 10 segundos antes de detener Sendmail en el cron
sleep 10

Veamos qué significa cada variable:

  • IP= la IP del servidor al cual vamos a conectarnos para copiar los datos.
  • USUARIO= el usuario con acceso SSH que utilizaremos con rsync.
  • DESTINO= la ruta de la carpeta/directorio local donde se guardarán los respaldos.
  • SITIOS= la ruta de la carpeta/directorio que contiene los sitios que deseamos respaldar.
  • BDS= la ruta de la carpeta/directorio que contiene las bases de datos que deseamos respaldar (se puede sincronizar así como lo mostramos, pero no es la forma más segura y fiable de hacerlo, es preferible siempre hacer dumps de SQL).

Por supuesto en el script debemos reemplazar los datos que están en negrita y rojo por los datos reales.

Guardamos el script como: /usr/bin/respaldos
No olvidemos aplicar permisos de ejecución:

chmod 755 /usr/bin/respaldos

Ahora vamos a colocar el script en un cron, que en este ejemplo correrá todos los días a las 01:00am:

crontab -e

Y colocamos estas líneas al final:

59 00 * * * /etc/init.d/sendmail start
00 01 * * * /usr/bin/respaldos ; /etc/init.d/sendmail stop

A las 00:59am se iniciará el servicio Sendmail.
A las 01:00am comenzará a correr el script, y una vez el mismo finalice Sendmail será detenido.

Para que el envío de los emails funcione debemos tener instalados sendmail y mailx. Aunque también si tienes Postfix u otro debería funcionar, solo asegúrate de cambiar los crones según sea necesario.

Como hemos visto, este sencillo script nos permite realizar una copia de datos en forma remota y posteriormente disponer de un informe en nuestro email detallando el contenido copiado y su peso. Por supuesto es posible realizar script un poco más complejo que lleve a cabo una rotación de los respaldos a través de distintas carpetas, permitiéndonos guardar múltiples copias, aunque eso lo veremos en otra ocasión.

Esperamos que hayas aprendido cómo usar rsync con este sencillo script. Si tienes alguna duda o consulta o simplemente quieres mencionar algo, por favor deja un comentario aquí abajo.


¿Te resultó útil el artículo? Compártelo con tus colegas: