Rsync permite sincronizar directorios y realizar transferencias incrementales de archivos, ya sea dentro del mismo servidor o entre servidores. Es una utilidad muy común en entornos Linux aunque no tanto en entornos Windows donde es más común usar robocopy.
Hace unas semanas tuve la necesidad de migrar un betusto Jira 5.1 desde un entorno Windows Server 2003 y SQL Server hacia un entorno Red Hat 7 con MySQL 5.6; para más inri ambos servidores se encontraban en paises distintos y la comunicación transcurría por canales inseguros.
El principal problema era que la ventana de servicio asignada era de solo dos horas. Durante las pruebas, restaurar el backup de la BD en XML de Jira necesitaba unos 45 minutos, y copiar los attachments varias horas; por ello la única forma viable de hacerlo en menos de dos horas era hacer uso de una herramienta de sincronización, con capacidad para crear un canal seguro, que funcionase con Windows y Linux.
cwRsync (Rsync para Windows)
cwRsync es un paquete que engloba cygwin, OpenSSH, OpenSSL y rsync. Con la ventaja que solo se precisa descargar, descomprimir y usar, es decir, no es necesario instalar nada en Windows.
Rsync: sincronización local
Rsync para Windows, para sincronización local, funciona igual, y admite los mismos parámetros, que rsync para Linux. Tan solo existen dos detalles a tener en cuenta:
- Las unidades se referencian como
/cygdrive/letter/
, dondeletter
indica la letra de unidad. A continuación un ejemplo para hacer referencia a la unidadC:\
:/cygdrive/C/
. - Las rutas usan la barra normal (
/
) en lugar de la barra invertida (\
). A continuación un ejemplo para hacer referencia al directorioC:\Archivos de programa\Atlassian
:/cygdrive/C/Archivos de programa/Atlassian
.
Rsync: sincronización remota
La potencia de rsync reside en la posibilidad de sincronizar directorios entre servidores a través de redes inseguras, gracias a que previamente se crea un tunel SSH.
En el caso de rsync para Windows es necesario indicarle donde se localiza el ejecutable ssh.exe
, ejemplo: rsync -e /cygdrive/C/users/antonio.guillen/Downloads/cwRsync_5.5.0_x86_Free/bin/ssh.exe opciones SRC DST
, donde opciones engloba los parámetros/opciones de rsync y SRC y DST la ruta de origen y destino respectivamente.
Ejemplo:
|
|
Ojo, si al ejecutar rsync para realizar una sincronización remota recibe un error similar a:
|
|
El problema se debe a que no se ha indicado la ruta de acceso a ssh.exe
o rsync no tiene acceso al mismo.