1. Febrero 2019
Aaron K. | Richard L.
BACKUP AUTOMÁTICO AL
CONECTAR USB/DiscoDuro LINUX
Udev es un administrador de dispositivos que te permite entre otras cosas, disparar la
ejecución de un programa o script, cuando un elemento es agregado o removido del sistema
en ejecución, como parte del manejo de eventos del dispositivo. Nosotros podemos usar esta
caracteristica para ejecutar un script que haga un backup despues de agregar un dispositivo
USB ó Disco Duro Externo en el sistema.
Antes de nosotros configurar una regla para el manejo de eventos de dispositivos,
necesitamos que Udev conozca algunos atributos del dispositivo externo que usaremos para
almacenar los backups.
Conecta el dispositivo y en la consola ejecuta el comando $ lsusb
Para éste caso estaremos usando un Disco Duro externo de 1TB como se muestra acá:
De la salida del comando anterior, podemos ver que la ID del vendedor de dispositivo es
125f, el cuál deberémos especificar en las reglas de Udev como ya veremos más abajo.
Primero desconectamos el dispositivo extraible del sistema, y creamos una nueva regla para
Udev llamada 10.autobackup.rules dentro del directorio /etc/udev/rules.d/
El número 10 en el nombre del archivo especifica el orden de análisis de la regla. El orden en
que las reglas son analizádas es importante; siempre que usemos reglas personalizadas,
éstas deberían ser analizádas antes que las reglas predeterminadas.
Ejecutamos
$ sudo nano /etc/udev/rules.d/10.autobackup.rules
2. y agregamos la siguiente regla
SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="125f" SYMLINK+="external%n",
RUN+="/bin/backup.sh" (en una misma linea)
Explicamos brevemente la regla:
• “==” Es un operador de comparacion de igualdad.
• “+=” Es un operador que agrega un valor a una clave que contiene una lista de
entradas.
• SUBSYSTEM: Busca coincidencia con el subsistema de eventos del dispositivo.
• ACTION: Busca coincidencia con el nombre de la accion del evento.
• ATTRS{idVendor}: Busca coincidencia con los valores de atributo sysfs del dispositivo
de eventos, que es el ID del proveedor del dispositivo.
• RUN: Especifica cual programa o script se ejecutará como parte del manejo de
eventos.
Guardamos el archivo y cerramos el editor.
Escribimos el script del Auto-Backup
Crearémos un Script para que ejecute el backup cuando el dispositivo sea conectado en el
sistema.
$ sudo vim /bin/autobackup.sh
Ahora copia y pega el siguiente script, asegurandote de reemplazar los valores de
BACKUP_SOURCE, BACKUP_DEVICE y MOUNT_POINT en el script.
#!/usr/bin/bash
BACKUP_SOURCE="/home/admin/important"
BACKUP_DEVICE="/dev/external1"
MOUNT_POINT="/mnt/external"
#check if mount point directory exists, if not create it
if [ ! -d “MOUNT_POINT” ] ; then
/bin/mkdir “$MOUNT_POINT”;
fi
/bin/mount -t auto “$BACKUP_DEVICE” “$MOUNT_POINT”
#run a differential backup of files
/usr/bin/rsync -auz "$MOUNT_LOC" "$BACKUP_SOURCE" && /bin/umount "$BACKUP_DEVICE"
exit
3. Luego hacemos el script ejecutable con el siguiente comando.
$ sudo chmod +x /bin/autobackup.sh
Luego recargamos las reglas de Udev con el siguiente comando.
$ udevadm control –reload
De aquí en adelante cuando conectes el Disco Duro Externo, o cualquier dispositivo que
hayas configurado para el sistema, todos tus documentos y archivos en la locacion
especificada deberian ser autorespaldados en él.
Nota: La forma en que todo esto funciona podria verse afectado por el sistema de archivos que use tu dispositivo externo y
tambien las reglas para Udev que escribas, especialmente cuando estes capturando los atributos del dispositivo.