Backup de archivo fotográfico con Google Drive en Linux

Cada vez más gente hace backup de fotos con Google Drive. Hace poco descubrí un método para mantener sincronizadas carpetas de Linux con GDrive, que nos puede servir para mantener un backup en la nube de nuestros archivos. Podemos usarlo incluso para sincronizar carpetas de varios ordenadores. Y todo ello con un consumo muy bajo de recursos.

Yo en particularmente lo utilizo para realizar el backup de un archivo fotográfico y os contaré exactamente cómo lo hago.

Cómo detectar cambios en la carpeta que contiene neustro archivo fotográfico

Inotify es un programa que permite la monitorización de sistemas de archivos en Linux. Lo utilizaremos para detectar cambios en nuestra carpeta de fotografías, y lanzar una sincronización del archivo afectado con Google Drive. De este modo, cualquier cambio en nuestro archivo fotográfico será rápidamente sincronizado con la nube.

Pero lo primero, es instalar Inotify:

sudo apt-get install inotify-tools
GRIVE: INTEGRANDO LINUX CON GDRIVE

Ahora instalaremos la herramienta grive:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install grive

Ahora, el script necesario para sincronizar automáticamente los archivos de la carpeta local:

GRIVE_COMMAND_WITH_PATH=/usr/bin/grive    # Ruta a grive
GDRIVE_PATH=~/Fotografias         # Carpeta que queremos sincronizar
TIMEOUT=60              # Se buscarán cambios periódicamente, en intervalos de ms indicados aquí

declare -i esta_grive_ejecutando

while true
do
    inotifywait -t 300 -e modify -e move -e create -e delete -r $GDRIVE_PATH
    esta_grive_ejecutando=`pidof grive`
    if [[ "$esta_grive_ejecutando" -ne 0 ]] 
    then
        echo "Grive está ejecutandose, PID: $esta_grive_ejecutando. Esperando..."
        sleep $TIMEOUT
    else
        cd $GDRIVE_PATH && $GRIVE_COMMAND_WITH_PATH
    fi
done

Utilizar Cron para programar las tareas

También crearemos el siguiente script. Lo que hace es comprobar que no hay más instancias del script anterior ejecutando. Tened en cuenta que el script anterior se ejecuta regularmente, y si comienza a actualizar un archivo demasiado grande, podría ocurrir que en el siguiente intervalo todavía no hubiera terminado.

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

TIMEOUT=60

declare -i is_grive_cron_running

is_grive_cron_running=`pidof grive`

if [[ "$is_grive_cron_running" -ne 0 ]] 
then
    echo "Grive está corriendo en cron: $is_grive_cron_running. Esperando..."
    sleep $TIMEOUT
else
    cd "$HOME/Fotografias" && grive | tee /tmp/mi_gdrive_log
fi

Ahora gestionaremos los cambios remotos en GDrive, para lo cual usaremos cron.

ejecutamos

crontab -e

… y añadimos lo siguiente:

*/10 * * * *  /home/hkr/bin/update-grive.sh

El fichero /tmp/migdrivelog nos mostrará si los archivos se están sincronizando correctamente. Podemos consultarlo cuando queramos, o bien ponerlo en el escritorio mediante un terminal transparente integrado en el fondo de escritorio (xrootconsole).