start
UN CASO PRACTICO

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

Explicaré aquí un caso práctico de utilización de rsync para hacer copias de seguridad de una carpeta local en un equipo remoto. Para ello vamos a crear un script llamado respaldo.sh

El script se encargará de copiar los ficheros nuevos del directorio local al directorio remoto, así como de eliminar del directorio remoto los ficheros que se hayan eliminado en el directorio local. En una palabra creará y mantendrá, cada vez que se ejecute, un espejo del directorio local en el equipo remoto.

$ gedit respaldo.sh
Se asume la siguiente situación
Usuario que realiza la operación: usuario
Ubicación local de la carpeta: /home/usuario/trabajo
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 sincronizar una carpeta local con un Equipo Ubuntu Remoto.
# ------------------------------------------------------------------------
 
clear
 
HOY=`date`
echo "----------------------------------------------------------------"
echo "Copia de Respaldo con fecha: $HOY"
echo "----------------------------------------------------------------"
echo ""
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
BACKDIR="/home/usuario/trabajo"
 
# Directorio de destino (remoto)
DESTDIR="$DEST://home/usuario/backup"
 
# 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 local de la cual queremos hacer la copia de seguridad, DESTDIR la carpeta destino que guardará la copia de seguridad.

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

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.

$ ./respaldo.sh