Copiar ficheros entre servidores con rsync

En todos mis servidores (linux) tengo instalado rsync.

Rsync permite copiar ficheros, o sincronizarlos mejor dicho, entre distintos servidores.

En lo que destaca es en que lo hace de forma incremental, rápida y de forma muy simple. Esto significa que solo envia los ficheros que se han modificado, muy útil para usar en backups o en deploys.

Yo lo uso para dos cosas distintas:

  • hacer una copia de seguridad rápida de todos los ficheros de la web
  • mover una web de un servidor a otro (y también para mover la web de mi local al servidor de producción del cliente)

Por línea de comandos es muy fácil de usar, pero como siempre me dejo algo … pues he hecho este post del blog para tenerlo documentado.

Básicamente: 

Para copiar un directorio de forma recursiva manteniendo permisos en los ficheros se puede hacer lo siguiente.

De servidor externo a tu maquina local

rsync -avzP -e 'ssh -p222' [email protected]:/var/www/ /directorio/web/

Con esto estamos copiando todo lo que hay en la ruta /var/www del servidor con ip 123.123.123.133, usando una conexión ssh por el puerto 222, a un directorio “/directorio/web” de la máquina actual.

De maquina local a servidor externo

También podemos querer hacerlo al revés, desde nuestra máquina actual enviar los datos a otro servidor mediante una conexión ssh:

rsync -avzP /directorio/web/ -e 'ssh -p22' [email protected]:/var/www/

Fijate que ahora estamos usando un puerto distinto, el 22 en vez del 222. Usar rsnyc es muy flexible, y puedes usar ssh keys para hacerlo sin tener que recordar contrasenyas.

Tags