Página no-oficial sobre Ubuntu 4.10


(Un Caso Práctico)

- ¿Cómo sincronizar una carpeta local con 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


e.j. Se asumen 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