Inicio / Blog
Publicado el 29 septiembre 2016

Cómo replicar tu web con Rsync

Cuando hablamos de replicar tu web, nos referimos a realizar una copia espejo de tus archivos, de un servidor a otro, de modo que cada cambio que realices en el primero sea replicado automáticamente en el segundo servidor. Esto es una buena opción si deseas tener una copia de tus archivos en otro servidor por si fallase el primero, o simplemente si deseas utilizarlo como copia de seguridad. La ventaja de utilizar Rsync para esto es que únicamente replicará los cambios que se hayan realizado en los archivos desde la última sincronización, ahorrando así un ancho de banda muy valioso y no sobrecargando el servidor. Rsync respeta también permisos y propietarios de los archivos, lo que es fantástico. De modo que vamos a ver cómo realizar todo el proceso para tener nuestros archivos replicados de una forma rápida y segura.

Vamos  a utilizar la siguiente configuración como ejemplo:

  • Servidor de origen de los datos: origen.dominio.com (origen) con IP 127.0.0.1
  • Servidor de destino de los datos: espejo.dominio.com (espejo) con IP 127.0.0.2
  • Los datos que vamos a replicar están en el directorio /var/www del servidor origen.dominio.com

1.- Instalación de Rsync

En la mayoría de distribuciones actuales, Rsync viene instalado por defecto, pero si no es así, podemos instalarlo de la siguiente forma, tanto en el servidor origen como en el servidor espejo:

yum install rsync

2.- Probando Rsync

Accedemos al servidor espejo y ejecutamos el siguiente comando para testear la sincronización:

rsync -avz -e ssh root@origen.dominio.com:/var/www/ /var/www/

Obtendremos algo como esto, y debes contestar Yes:

The authenticity of host 'origen.dominio.com (127.0.0.1)' can't be established.
RSA key fingerprint is 32:e5:79:8e:5f:5a:25:a9:f1:0d:ef:be:5b:a6:a6:23.
Are you sure you want to continue connecting (yes/no)?

Ahora introduce la contraseña root del servidor origen.dominio.com y podrás comprobar que el directorio /var/www del servidor de origen habrá sido replicado en el servidor espejo en la misma ruta.

3.- Creando las keys para conectar ambos servidores sin necesidad de introducir la contraseña

Debido a que ejecutaremos la sincronización de nuestros archivos automáticamente vía cron, necesitamos conectarlos antes sin necesidad de tener que introducir la contraseña root en cada conexión. De modo que vamos a crearlas de la siguiente forma, en el servidor espejo.

mkdir /root/rsync
ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

Obtendrás algo como esto:

Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [pulsa intro]
Enter same passphrase again: [pulsa intro]
Your identification has been saved in /root/cron/mirror-rsync-key.
Your public key has been saved in /root/cron/mirror-rsync-key.pub.
The key fingerprint is:
68:95:35:44:91:f1:45:a4:af:3f:69:2a:ea:c5:4e:d7 root@espejo

Ahora copiamos la key pública generada a nuestro servidor de origen de la siguiente forma:

scp /root/rsync/mirror-rsync-key.pub root@origen.dominio.com:/root/

La clave pública del servidor espejo estará ahora disponible en el directorio /root del servidor origen.dominio.com

4.- Configurando el servidor origen.dominio.com

Accede al servidor de origen y ejecuta los siguientes comandos:

mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/mirror-rsync-key.pub ~/.ssh/
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
cat mirror-rsync-key.pub >> authorized_keys

5.- Probando si RSync nos funciona sin necesidad de solicitarnos la contraseña root

En el servidor espejo, ejecutamos lo siguiente:

rsync -avz --delete --exclude=**/stats --exclude=**/error --exclude=**/archivos/imágenes -e "ssh -i /root/rsync/mirror-rsync-key"root@origen.dominio.com:/var/www/ /var/www/

La opción «–delete» indica que si un archivo es eliminado en origen, deberá eliminarse también en el espejo. La opción «–exclude» indica aquellos archivos o directorios que no deseamos que sean copiados ni actualizados en el servidor espejo.  Si ejecutas «man rsync» verás todas las opciones de las que dispones para adaptar la replicación de archvios a tus necesidades.

Una vez ejecutado el comando anterior, deberías obtener algo como esto sin necesidad de que te haya solicitado una contraseña:

receiving file list ... done

sent 71 bytes received 643 bytes 476.00 bytes/sec
total size is 64657 speedup is 90.56

6.- Creando una tarea cron para ejecutarlo constantemente

Nos interesa automatizar la replicación de archivos sin que sea necesaria nuestra intervención manual, así que ejecutamos lo siguiente en el servidor espejo:

crontab -e

Y añadimos las siguientes líneas al archivo de cron:

*/5 * * * * /usr/bin/rsync -azq --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i /root/rsync/mirror-rsync-key" someuser@server1.example.com:/var/www/ /var/www/ 

Con esto, la replicación de archivos se producirá automáticamente cada 5 minutos. Como sabes, puedes modificar el cron para adaptarlo a tus preferencias muy fácilmente.

Esto es todo, no ha sido demasiado complicado, ¿verdad? Rsync no es el único modo de replicar archivos, pero es una solución rápida y eficaz compatible con todos los sistemas Linux/Unix.

 

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Digg thisBuffer this pageEmail this to someone

Entradas relacionadas:

Rsync: 10 ejemplos prácticos de comandos Rsync Rsync o Remote Sync (Sincronización Remota) es una potente y versátil herramienta que nos permite copiar y sincronizar nuestros datos de forma local y remota entre diferentes directorios, discos y red...
Optimizando la memoria Swap de nuestro servidor La memoria SWAP (también conocida como espacio de intercambio o memoria virtual) es una partición en nuestro disco duro que se utiliza para almacenar las imágenes de procesos y datos que no es posible...
Migrar de Plesk a Plesk sin root Si alguna vez has realizado la migración de un dominio desde un servidor Plesk hacia otro servidor con Plesk, habrás visto lo sencillo que resulta gracias a la herramienta de migración que incluye e...
GlusterFS: crea tu almacenamiento distribuido Vivimos en un mundo donde la información está creciendo de forma impredecible y con ello nuestra necesidad de almacenar estos datos de un modo eficiente. Los sistemas de almacenamiento distribuido, do...

//
proxAdmin

En ProxAdmin le ofrecemos servicios de administración de servidores, soporte helpdesk externalizado y servicios IT especializados que le permitirán mantener una presencia en internet consistente y segura.

¿Tienes algo que decir?