Sincronizar datos de dos sites en diferentes servidores
Muchas veces nos vemos en la necesidad de tener dos sites redundados. Donde digo dos sites, pueden ser sites, directorios, ficheros… etc.
Para automatizar la tarea lo máximo posible, sin dejar de lado la seguridad, pasaremos los datos entre los dos servidores a través de un túnel ssh, aunque necesitaremos conectar a SSH sin clave, con el fin de automatizarlo todo.
La forma de usar rsync a través de ssh, para que nuestros datos vayan cifrados, es la siguiente:
rsync -az --delete --exclude "cache" -e ssh usuario@hostdestino:/var/www/site1 /var/www/site1-replica
-az: El “-a” quiere decir modo archivo y engloba “-rlptgoD”, que viene ser, recursivo, copiar los links como links, preservar permisos, tiempo, grupos, propietario, archivos de dispositivo y especiales. El “-z” es para comprimir y así ahorrar ancho de banda en la sincronización.
--delete: Borramos archivos en nuestra réplica que fueron borrados en el origen.
--exclude: Excluimos todos los ficheros que coincidan con el patrón, en este caso “cache”. Hay un directorio en ese site, que es cache y no quiero que se pase todo lo que hay en él. Hay que tener cuidado, porque si hubiese otro fichero que incluya ese patrón, tampoco lo pasaría.
-e: El modo de transmisión que utilizaremos, en este caso ssh con el usuario “usuario” y host de destino “hostdestino”.
/var/www/site1/: Este el directorio de origen. Mucho ojo con la barra final. Sino la ponemos, como es el caso, pasará todos los archivos a partir de “site1″, pero sino la ponemos, pasará la carpeta “site1″, directorio “site1″ incluido.
/var/www/site1-replica: Directorio de destino, donde aparecerán los archivos sincronizados.
Esa sencilla linea la podemos incluir en el cron para que se ejecute todos los días, o todas las horas, o tan frecuéntemente como necesitéis. Es importante tener el SSH sin clave para el usuario que va a ejecutar el script, para tener una gestión automática y desatendida.
- None Found






He descubierto tu blog y es muy interesante. Da la casualidad que estuve configurando hace poco backups remotos con rsync y ssh, encontre algun articulo muy interesante para añadir seguridad al tema, te dejo el enlace:
http://troy.jdmz.net/rsync/index.html
(lo más relevante es el tema de denegar todas las conexiones ssh para el usuario usado excepto aquellas que lancen el comando rsync).
Yo además añadí claves y usuarios de rsync, y lo hice conectándome al demonio rsync (:: en vez de : antes de la ruta en el server, lo cual permite chroot).
Hola Pau.
Perdona que no te haya contestado antes. Últimamente no paro.
Me guardo tu enlace y veré si puedo completar el articulo con la información que comentas, ya que parece muy interesante.