start
UN CASO PRACTICO

¿Cómo sincronizar una carpeta desde un equipo Ubuntu remoto en el equipo local (rsync)?

Explicaré aquí un caso práctico de utilización de rsync para restaurar en el equipo local una copia de seguridad guardada en un equipo remoto. Para ello vamos a crear un script llamado restaurar.sh

El script se encargará de copiar los ficheros del directorio remoto en el directorio local.

$ gedit restaurar.sh
Se asume la siguiente situación
Usuario que realiza la operación: usuario
Ubicación local de la carpeta: directorio actual
Equipo Ubuntu remoto: 192.168.0.1
Ubicación donde guardar en el equipo Ubuntu remoto: /home/usuario/backup

Introduce las siguientes lineas.

#!/bin/bash
 
# Programa para restaurar una copia de seguridad guardada en un Equipo Ubuntu Remoto.
# -----------------------------------------------------------------------------------
 
clear
 
echo "----------------------------------------------------------------"
echo 'Connectando con ordenador remoto'
echo "----------------------------------------------------------------"
 
#Equipo Remoto
DEST="192.168.1.1"
 
# Se ejecuta sólo si el $DEST responde.
 
VAR=`ping -s 1 -c 1 $DEST > /dev/null; echo $?`
 
if [ $VAR -eq 0 ]; then
 
echo "Equipo $DEST conectado OK."
echo "----------------------------------------------------------------"
else
echo "No puedo conectarme a $DEST."
echo "----------------------------------------------------------------"
exit
fi
 
# Usuario que se conectará al servidor
#USER="usuario"
 
# Directorio de origen (remoto)
BACKDIR="$DEST://home/usuario/backup"
 
# Directorio local
DESTDIR="."
 
# Realiza la copia, mostrando a detalle lo que hace.
OPTS="-v -u -a --delete --rsh=ssh --stats"
 
rsync $OPTS $BACKDIR $DESTDIR

Guarda el fichero editado.

Ya tenemos el script preparado para realizar la copia de seguridad. Vamos a hora a explicarlo un poco mejor para que no quede ninguna duda.

1. Empezamos guardando en la variable DEST la dirección IP o el nombre del equipo remoto en el que queremos hacer la copia de seguridad.
En nuestro caso es 192.168.1.1

#Equipo Remoto
DEST="192.168.1.1"

2. Ahora comprobamos que el equipo Ubuntu remoto esta conectado en disposición de aceptar la conexión. Para ello le enviamos un ping, si nos responde continuamos con el programa, en caso negativo terminamos aquí y no se hace la copia de seguridad.

# Se ejecuta sólo si el $DEST responde.
 
VAR=`ping -s 1 -c 1 $DEST > /dev/null; echo $?`
 
if [ $VAR -eq 0 ]; then
 
echo "Equipo $DEST conectado OK."
echo "----------------------------------------------------------------"
else
echo "No puedo conectarme a $DEST."
echo "----------------------------------------------------------------"
exit
fi

3. Continuamos, en la variable USER guardamos el nombre del usuario, en BACKDIR la careta que contiene la copia de seguridad en el equipo remoto, DESTDIR la carpeta donde queremos almacenar a copia restaurada.

# Usuario que se conectará al servidor
#USER="usuario"
 
# Directorio de origen (remoto)
BACKDIR="$DEST://home/usuario/backup"
 
# Directorio local
DESTDIR="."

4. Por último guardamos las opciones que vamos a emplear del programa rsync en la variable OPTS y ejecutamos el comando para realizar la copia de seguridad.

#Realiza la copia, mostrando a detalle lo que hace.
OPTS="-v -u -a --delete --rsh=ssh --stats"
 
rsync $OPTS $BACKDIR $DESTDIR

Con esto está explicado el funcionamiento del script, vamos a hora a ejecutarlo.

$ ./restaurar.sh