Grsync es una interfaz gráfica (GUI) para rsync, la herramienta para la línea de comandos de sincronización de directorios disponible en Linux.

Si bien Grsync no permite acceder a toda la potencia que posee rsync, puede ser utilizado con mucha facilidad para sincronizar directorios (locales y remotos) aunque si necesitaremos un control mínimo sobre rsync.

Además con Grsync podemos crear fácilmente perfiles con diferentes tipos de copias mucho más fácilmente que con rsync y combinarlos con Cron para que se vayan ejecutando en diferentes momentos.

Para instalar grsync solo tenemos que ir a una terminal y allí:

~# apt install grsync 

Vamos a ver el interfaz de grsync al detalle

Interfaz de Grsync
  1. En este desplegable podemos crear nuevos perfiles.
  2. Aquí podemos navegar por las carpetas del disco/discos para elegir que archivos copiar y donde; también podemos introducir la ruta a mano.
  3. Aquí tenemos todas las opciones adicionales para las copias, como veis son muchas.
  4. En estas pestañas tenemos aun mas opciones adicionales.
En la última pestaña podemos pasar comandos antes y/o después de la copia.

Lo mas usual es usar un sistema de copias de seguridad en remoto, y guardar copias seguridad en la misma máquina local, o en un disco externo no tiene mucha dificultad. Así que vamos a ver como podemos hacer una copia de seguridad sobre SSH con la ayuda de Grsync.

Copias en remoto con Grsync.

He implementado un servidor SSH con usuario y contraseña en una máquina con Debian 10 con dirección IP 172.16.20.2 y como cliente usaré una máquina con Linux Mint; pero no es recomendable la opción usuario/contraseña en servidores remotos abiertos a internet por razones obvias de seguridad. Es necesario que Rsync y Grsync estén instalados tanto en el servidor como en el cliente.

He creado una carpeta llamada datos con algunos archivos de texto.

Truco: Podemos hacer esto en la terminal con el comando touch.

~# touch archivos{1..9}.txt

para crear archivos llamados archivos1.txt, archivos2.txt, asi hasta el 9.

También he instalado UFW para configurar el cortafuegos y le damos acceso al puerto 22 TCP.

~# apt intall ufw
~# ufw allow 22 tcp

Podemos comprobar que está activado correctamente con:

~# ufw status verbose

Esto mismo lo hacemos en la máquina cliente; En Linux Mint tenemos Ufw instalado en la distribución con interfaz gráfico. Con todo listo empezamos.

En el lado del servidor.

Instalamos openssh rsync y grsync con la terminal

~# apt update
~# apt install openssh-server rsync grsync

Configuramos el servidor editando el archivo de configuración sshd_config con nuestro editor favorito. En mi caso usaré Nano. ~# nano /etc/ssh/sshd_config

Y allí editamos algunas líneas:

Port 22
AddressFamily inet # para ipv4, para ipv6 sería inet6
ListenAddress 172.16.20.2
PasswordAuthentication yes
AllowUsers redes #yo usé este usuario pero ustedes usen el que sea conveniente

Guardamos el archivo y arrancamos el servidor con:

~# systemctl start sshd

Podemos comprobar que esta todo correcto con:

~# systemctl status sshd

En el lado del cliente.

Instalamos rsync y grsync.

~# apt update
~# apt install rsync grsync

Abrimos una terminal y empezamos una sesión ssh en una terminal con:

~# ssh redes@172.16.20.2

obtenemos un mensaje de terminal como la imagen inferior, en el que se nos comunica que vamos a añadir el host 172.16.20.2 a la lista de host conocidos y la clave ECDSA del este host, además se nos pide confirmación y la contraseña del usuario. Completamos los formularios y ya estaremos en una sesión de SSH en terminal, podemos salir con exit porque de momento no lo necesitaremos mas.

Ahora abrimos el interfaz de Grsync y aquí rellenamos los formularios con el origen de los archivos a respaldar y el destino como en la imagen inferior.

Guardamos el archivo, reiniciamos el servidor y cerramos la conexión. Con todo listo vamos a arrancar Grsync y como antes vamos a intentar hacer la copia, lo vemos en la imagen inferior.

Con todo listo hacemos clic en el icono de “Ejecutar” de la esquina arriba a la derecha, os lo indico en la imagen inferior, porque según la versión del escritorio que usemos cambiará el icono.

Nos aparece un prompt para introducir la contraseña y ya vemos como se hace la copia, como los archivos son muy pequeños la copia es instantánea.

Copia realizada con éxito

El problema de realizar las copias así es que es un poco complicado de automatizar para los que no sepan programar, pues hay que pasar la contraseña al prompt cada vez que se hace la copia, así que vamos a realizar la misma tarea esta vez con clave de cifrado RSA sin contraseña con lo que automatizarla será mucho mas fácil.

Aparte tiene otro beneficio adicional desde el punto de vista de la seguridad: es mas difícil de violentar, pues atacante necesitaría sustraer las claves, o bien del servidor o bien del cliente, lo que es mucho mas difícil que obtener una contraseña. Eso si, requiere de un poquito mas de trabajo, pero tampoco demasiado; vamos a verlo.

En el lado del cliente.

Creamos una clave RSA (podríamos elegir otra pero usaré esta) con el comando ssh-keygen.

~# ssh-keygen -f /home/redes/.ssh/mint_key.pub -t rsa -b 4096
  • -f le pasamos el nombre de archivo junto con la ruta a su ubicación.
  • -t tipo de clave.
  • -b bits del cifrado cuanto mas alto mas fuerte.

Durante el proceso se nos requerirá una contraseña para la clave, la dejamos en blanco haciendo Intro directamente. Con la clave generada tenemos que exportarla al servidor en la terminal con:

~# ssh-copy-id redes@172.16.20.2

Es posible que nos salte en algún momento un error “Agent admitted failure using the key”, lo corregimos cerrando la conexión y luego usar el comando:

~# ssh-add

A continuación nos conectamos por SSH al servidor y editamos el archivo de configuración del servidor:

~# nano /etc/ssh/sshd_config
# editamos las líneas:

PasswordAuthentication no
PubkeyAuthentication yes
RSAAuthentication yes #está deprecated pero yo lo sigo usando de momento
AuthorizedKeysFile  .ssh/authorized_keys .ssh/authorized_keys2
ChallengeResponseAuthentication no #suele venir comentada, pero comprobadlo por            si acaso

Guardamos el archivo, reiniciamos el servidor y cerramos la conexión. Con todo listo vamos a arrancar Grsync y como antes vamos a intentar hacer la copia.

Esta vez no ha aparecido ningún prompt para pedirnos la contraseña, ahora podremos automatizar con Cron la copia para que se haga periódicamente.

Para esta entrada he usado las opciones más básicas pero con un poco de investigación podemos crear diferentes perfiles con diferentes características de la copia (copias incrementales por ej.) y ejecutarlos periódicamente. Para ejecutar los perfiles es muy simple en la terminal:

~# grsync -e nombre_del_perfil

.. que es facilísimo de implementar en un script en bash o crear un servicio systemd a la hora de automatizarlo sin necesidad de saber apenas programar.

Y bueno esto es todo por hoy espero que os sea útil la entrada.

Compartir / Share

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada.