Realizar backups de manera fácil con RSYNC y SSH

En este pequeño tutorial vamos a ver como realizar de forma automática una copia de seguridad utilizando rsync en combinación con ssh para poder realizar la copia desde un ordenador (que puede encontrarse dentro de la red lan o en otra ubicación a través de internet) a otro ordenador por una canal de seguridad cifrado.

Primero vamos a ver cuales son las opciones de rsync más comunes y que vamos a usar en este caso:
-a -> para copiar recursívamente manteniendo privilegios, fecha de creación, permisos, etc.;
-v -> para incrementar el nivel de detalle de la operación;
-z -> para comprimir los datos, así la transferencia es mas rapida. Si el flujo de datos por red es rápido, es posible que no sea necesario usar ésta opción, ya que el echo de comprimir los datos también provoca carga de trabajo en ambos ordenadores, y los que ganamos en velocidad de transferencia lo podemos perder en tiempo de compresión / descompresión de datos.
-e ssh -> para usar ssh para copiar los archivos de un servidor a otro. Este es el canal cifrado que se vamos a usar para transferir los datos con seguridad.

 

Para ilustrar el ejemplo voy a asumir la siguiente configuración:

servidor de logs : 192.168.0.100
servidor web : 192.168.0.200
usuario : bot
rsync lo voy a ejecutar con un cron en el servidor web

Procedimiento:
1.- Instalamos rsync en el servidor web, en Debian basta con hacer un:

# apt install -y rsync

2.- Ejecutamos rsync en 192.168.0.200:

# rsync -e ssh -avz bot@192.168.0.100:/home/bot/logs/canal   /var/www/logs/canal/

Si todo esta bien tendremos un mensaje indicando los archivos recibidos, la cantidad de bytes y la velocidad de transferencia.

3.- Hasta aquí todo esta bien, pero si necesitamos hacer esto automáticamente cada hora mediante cron tenemos que lograr que ssh no nos pida contraseña. Para lograrlo realizamos el siguiente procedimiento:

Creamos una llave publica y una llave privada:

# ssh-keygen -t dsa

Presionando solo enter en todas las preguntas que el comando anterior requiere vamos a tener nuestra llave publica en /home/usuario/.ssh/id_dsa.pub. Copiamos esta llave al servidor 192.168.0.100:

cd /home/usuario/.ssh/
cat id_dsa.pub | ssh bot@192.168.0.100 «cat – >> /home/bot/.ssh/authorized_keys»

Probamos que todo funcione haciendo:

ssh bot@192.168.0.100

Si no nos pide contraseña y entramos directamente, podemos continuar con el siguiente paso.

4.- Ahora que 192.168.0.100 no nos pide contraseña podemos automatizar el proceso. Debemos ejecutar este comando en 192.168.0.200 como una tarea cada n cantidad de tiempo y desde luego podemos tener un registro de que archivos se van copiando:

# crontab -e
Para ejecutar el backup cada hora agregamos en 192.168.0.200:
0 * * * * rsync -e ssh -avz bot@192.168.0.100:/home/bot/logs/canal /var/www/logs/canal/ 2>&1 > /var/log/rsync-backup.log

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *