UN CASO PRACTICO |
---|
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