Hace unos días, en nuestro grupo de Telegram hablábamos de las bondades de rsync, ésta increíble aplicación para la transferencia/backup de archivos tanto de manera local como remota. Algunos dábamos ideas/soluciones a algunos de temas de algunos usuarios a la hora de querer hacer backups de su contenido y poder automatizarlo usando CRON (herramienta que trae todo sistema GNU/Linux).

Es por eso que hoy, teniendo un poco de tiempo libre, me puse a armar un script para usar rsync de una manera mucho más sencilla, sobre todo para aquellas personas que se les complica mucho usar la terminal tirando comandos que no entienden mucho.

El script, de momento, es bastante sencillo. No utiliza todos los parámetros que se pueden usar en rsync pero la idea es hacer una transferencia simple y sencilla tanto dentro de un mismo equipo local como a un equipo remoto.

Lo bueno de Rsync es que uno puede directamente apuntar a un archivo o a un directorio y la aplicación se encarga de mandar una cosa o la otra, obviamente si es un directorio, Rsync enviará el directorio junto con todo su contenido.

Este es el script (versión bastante verde, a mejorar y actualizar):


#!/bin/bash

clear

echo "###################################################"
echo "#                                                 #"
echo "#  Bienvenido al sincronizador de archivos        #"
echo "#                                                 #"
echo "###################################################"

echo "Ingresar directorio o archivo de origen"
read origen

echo "Ingresar directorio o archivo de destino (puede ser a un equipo remoto. Ejemplo: usuario@ip:/ruta/destino/)"
read destino

echo "¿El origen $origen es correcto? Y/N"
read respuesta

if [ $respuesta == "Y" ] || [ $respuesta == "y" ]
then
    ori_con="y"
    echo "Origen confirmado"
else
   echo "Modificar el Origen"
   exit 0
fi

echo "¿El destino $destino es correcto? Y/N"
read respuesta

if [ $respuesta == "Y" ] || [ $respuesta == "y" ]
then
    dest_con="y"
    echo "Destino confirmado"
else
   echo "Modificar el Origen"
   exit 0
fi

if [ $ori_con == "y" ] && [ $dest_con == "y" ]
then
    echo "¿Iniciar el proceso? Y/N"
    read procesar
    if [ $procesar == "Y" ] || [ $procesar == "y" ]
    then
        clear
        rsync --progress -avz "$origen" "$destino"
    fi
else
    echo "Proceso Cancelado"
    exit 0
fi

NOTA: El éste es solo un ejemplo ya que voy a ir actualizando el script por lo que si les interesa les pisdo que estén atentos a mi respositorio en github


Te muestro como funciona:

1) Ejecutamos el script mediante ./rsync_v1.sh. Si descargás el script de mi repositorio en Github ya debería tener los permisos de ejecución, sino basta con dárselos con: chmod a+x rsync_v1.sh.

2) El script nos va a preguntar el directorio o archivo de origen así como el destino. Incluso el destino puede ser un equipo remoto sin problemas.

_Logo

Una vez que ingresamos el origen y el destino el script nos da la posibilidad de confirmar tanto el origen como el destino para que podemos hacer una revisión así como una confirmación de inicio del proceso.

3) Una vez que confirmamos el proceso, si el envío es a un equipo remoto obviamente el script nos va a preguntar la contraseña del usuario en el equipo de destino. En éste caso va a preguntarla porque estoy haciendo un envío de un archivo a mi RaspberryPi.

_Logo

4) Una vez que ingresamos la contraseña (en el caso de que el envío sea remoto) comenzará el proceso. En el script está puesto que muestre el proceso para que podemos tener un poco de control o por lo menos saber como está yendo el envío. Sino solo veríamos esperar a que termine el proceso, por eso si es un envío a un equipo remoto es mejor ver como va el proceso por las dudas.

_Logo

Obviamente en éste paso se hace el llamado “per sé” de Rsync por lo que vamos a ver trabajar a la aplicación y vamos a ver como nos avise cuando termine todo el proceso.

5) Una vez terminado, chequeamos en el equipo de destino si todo fue bien. En éste caso, no hubo problemas.

_Logo

NOTA: Fíjense que en éste ejemplo estoy haciendo un envío de un equipo a otro en distinta red por lo que incluso Rsync no tiene problemas en hacerlo con equipos que está totalmente separados. Obviamente de un equipo a otro en la misma red también funciona sin problemas.


Seguinos en las redes sociales: