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.
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
ResponderEliminarla ruta de windows es :/ ?
ResponderEliminar