Copias incrementales con Rsync. Linux a Windows (Parte 1).

Copias de seguridad remotas con Rsync. Desde Linux a Windows.

Introducción. 

En esta práctica voy a explicar como hacer una copia de seguridad de un servidor Linux a una máquina Windows de forma remota. Para ello voy a usar ssh para conectar ambas máquinas, instalando en Windows Cygwin y automatizando la copia de seguridad para que el sistema lo haga solo llegados la fecha y hora que nosotros queramos.

Cygwin es una herramienta que se usa para proporcionar un comportamiento similar a los sistemas Unix en Microsoft Windows.

Instalación Cygwin y conexión de máquinas.

Voy a explicar paso a paso como realizarlo:

Lo primero es descargar Cygwin (Descargar aquí):


Al ejecutarlo se abre el asistente de instalación:


Ahora tendremos que instalar los paquetes necesarios. Para ello elegimos la opción de "install from Internet":


Lo instalamos en C: y lo ponemos para todos los usuarios:


Elegimos la opción de "Direct Connection" para descargar lo que necesitamos:


Elegimos el sitio entre todas las opciones que nos dan. Elegimos el que queramos, ya que cualquiera nos servirá:


Entonces una vez elegido nos saldrá la lista con todos los paquetes disponibles, pulsamos en "View" y tenemos que instalar openssh, openssl, zlib (biblioteca de compresión de datos) y rsync


Los buscamos en Search cada uno y le pulsamos sobre "skip". Sería algo así:


Cuando tengamos a todos seleccionados para la instalación pulsamos en siguiente y comenzará a descargar e instalar:


Así terminará y pulsaremos finalizar.
Después tendremos el terminal Cygwin y lo ejecutamos como administrador:


Usamos el comando ssh-host-config -y para configurar nuestro servidor ssh en Windows:


Nos pide que le pongamos la contraseña. La introducimos:


Terminará la configuración. Ahora tenemos que iniciar el servicio con net start sshd:


Una vez hemos hecho esto ya estará todo listo para hacer la copia de seguridad desde nuestro servidor Linux. Tenemos que asegurarnos que tenemos ssh instalado y tambíén Rsync.
Voy a crear una carpeta de prueba con dos archivos dentro que serán los que copiaremos a la máquina Windows:


Ahora usaremos rsync para hacer la copia de seguridad. Usaremos el siguiente comando:


Parámetros usados:
  • -a: Para indicar el archivo.
  • -v: Para que nos ofrezcan más información cuando ejecutamos rsync.
  • -z: Para comprimir los archivos durante la instalación.
  • -e: Indica el host remoto al que vamos a hacer la transferencia.


Y observamos como se ha copiado la carpeta a la máquina Windows:


Automatizar la copia incremental.


Vamos a hacer que la copia de seguridad se realice cada cierto tiempo y de forma automática, sin tener que preocuparnos de ello. Lo primero que vamos a hacer es que la conexión ssh para realizar la copia no nos pida contraseña, para que el sistema pueda realizarla sin problemas.

Lo primero es generar las claves privada y pública con ssh-keygen:


Una vez generadas las claves vamos a copiarlas al cliente Windows al que nos conectaremos. Para ello usamos ssh-copy-id <usuario>@<IP>:


Ahora probamos a conectarnos por ssh y vemos que ya no nos pide contraseña:


Ahora lo haré será crear un script en bash con el comando rsync visto anteriormente. Lo que quiero hacer es que ejecutando solamente el script se realice la copia incremental y después con crontab le diré que ejecute el script semanalmente. El script es simple, tan solo contiene el comando:


Una vez guardado tendremos que darle permisos al script con chmod -R 777 <script> para que tenga todos los permisos y comprobamos que al ejecutarlo realiza correctamente la copia de seguridad:


Automatización de la tarea.

Supongamos que en mi empresa quiero realizar la copia cada semana el viernes a las 15:00, una vez terminada la jornada laboral. Para esto usaré crontab. 

En el terminal usamos el comando crontab -e y cuando se abra el fichero crontab añadiremos la última línea que muestra a continuación:


El comando es sencillo de entender, le hemos dicho los minutos y la hora y con el "5" le hemos dicho que se ejecute el quinto día de la semana, osea el viernes.

Cambiaré la fecha y hora de Linux y Windows para comprobar que llegados un viernes a las 3 de la tarde se realiza la copia:



Y eso es todo! Esto es muy útil porque una vez hecho el sistema se encarga de todo y podremos tener todo lo que necesitemos a salvo con su copia de seguridad.

Espero haberles sido de ayuda. Si tienen alguna duda, no duden en dejarlo en comentarios. 

Fuentes.


Comentarios

  1. cuando configuro cygwin como dices, a la hora de dar la orden rsync desde mi terminal con la secuencia que tienes puesta para hacer la copia de seguridad y enviarla al sistema windows se queda pensando y da error

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Comando TOP y HTOP

Inittab y Upstart.