Sincronizar datos entre Linux y Windows con Cygwing + Rsync + SSH.

Continuamos con los backup. Hoy vamos a sincronizar la información contenida entre los distintos datacenters en Francia y nuestro servidor local Windows, con la finalidad de tener toda la información también localmente, por lo que pudiera pasar, y con la idea de poder sacar en adelenta backups en DVD, cintas o Blu-Ray. Hasta hora Rsync se está portando de maravilla y quiero seguir haciendo uso de él incluso en este paso, donde el servidor de destino funciona con Windows.

Este es solo un caso en el que nos puede venir bien, pero existen mucho más, por ejemplo se me ocurren estos:

  • Tener un backup de vuestros datos en la misma máquina
  • Tener un backup en un ordenador distinto dentro de la misma red
  • En un ordenador alojado en otra ubicación
  • Entre dos equipos Windows o como en este caso una combinación Linux-Windows.

En fin, multitud de situaciones. Recordad que Rsync no se limita solo a copiar archivos, ni siquiera aquellos que son nuevos o se han modificado, sino que Rsync es capaz hasta de copiar solo la parte del archivo que ha cambiado, por ejemplo, si tenemos un archivo de 1Gb Rsync copiará este en el primer backup, pero en el siguiente si dicho archivo ha pasado a contener 1.1Gb Rsync solo copiará los 100Mb que le falta, con el considerable ahorro de CPU y ancho de banda que supone, y todo ello bajo una conexión SSH.
 
Existen versiones parecidas a Rsync para Windows pero todo el mundo coincide en que no son tan potentes como la original, y no voy a ser yo el que pierda el tiempo probándolo para llegar a la misma conclusión, así que utilizaremos Cygwin, el emulador de Linux para Windows, por resumirlo en una frase, y así podremos seguir con Rsync.

Cygwin es una aplicación gratuita en la que puedes ejecutar muchísimas aplicaciones de Linux, entre ellas todas las que vamos a necesitar para hacer funcionar Rsync del mismo modo en que si tuvíeramos un entorno Linux. De esta manera nos ahorramos tener que cambiar de S.O. o de habilitar un nuevo PC para esta tarea.

Antes de nada aseguraros de hacer un NAT bien hecho del puerto 22 para SSH y del 873 para Rsync en vuestro router, de esta forma el equipo con Linux podrá encontrar al equipo Windows, siempre y cuando los dos equipos se encuentren en ubicaciones distintas.

Empezamos por instalar Cygwin:

  1. Descarga Cygwin de http://www.cigwin.com/ e instálalo en Windows
  2. Cuando el asistente de instalación de Cygwin nos pregunte entre "Just Me" y "All Users" elegimos este último
  3. Cuando nos pregunte donde instalarlo le indicamos el siguiente path: c:\cygwin
  4. Seleccionamos una ubicación desde la que descargar los paquetes (cualquiera de las que hay valen)
  5. Pulsamos el botón "View" para ver todos los paquetes
  6. Seleccionamos los paquetes que necesitaremos, pulsando para ello sobre la palabra "skip" de los siguientes paquetes: openssh, openssl, tcp_wrappers, zlib, rsync, cygrunsrv
  7. Pulsamos "Next" y empezará la instalación.
  8. Una vez instalado ejecutamos Cygwin e introducimos los siguientes comandos

# ssh-host-config -y

Cuando el script nos pida que indiquemos la "environment variable CYGWIN=" le escribimos la siguiente: ntsec tty

Iniciamos el servicio por medio del siguiente comando:

# net start sshd

Ahora ya podemos establecer conexiones SSH entre los equipos Linux y Windows para el sincronizado de datos. Para ello probamos el siguiente ejemplo desde la consola de Linux:

# rsync -avz archivo_cualquiera.txt -e ssh administrador@ip_windows:/

Donde archivo_cualquiera.txt lo sustituimos por un archivo contenido en el directorio en el que nos encontramos y que podemos usar a modo de prueba, y donde ip_windows los sustituimos por la dirección IP del equipo en el que corre Windows.

Si todo es correcto nos dirá algo así:

RSA key fingerprint is b1:a0:ff:7a:1f:50:17:10:21:a9:26:ad:55:c3:90:ee.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ´ip_windows´ (RSA) to the list of known hosts.
Administrador@ip_windows´s password:

Introducimos el password de administrador de Windows y el archivo se enviará, ...Rakastasplán!

A partir de ahora solo queda crear un script que sincronice con Rsync los datos que querais tener por duplicado en el servidor Windows e incluir este en el cron.

Por último, para que entre Linux y Windows no se pidan contraseñas de acceso y podamos automatizar la tarea podeis seguir los pasos que comenté en este otro post.

21-03-2008


Comentarios:

11-03-2011 | Maikel Muchas gracias por tu post, realmente me ha sido muy útil, me ha funcionado todo muy bien. Dios te bendiga.

22-04-2013 | Classic Lo probe, pero no me funciona la opcion --partial, al retomar la red, me da un error de io, y sale de rsync...alguna idea?

Pues yo pienso que:


Suscribirse