Dropbox con varios directorios en GNU/Linux

Dropbox con varios directorios en GNU/Linux
08/01/11


Si sois usuarios del conocido servicio de sincronización de datos Dropbox, seguramente os incomode la necesidad de tener todos los archivos bajo un mismo directorio.

Pues bien, dándole vueltas se me ocurrió un sistema para tener sincronizados con Dropbox varios directorios diferentes, que ni si quiera tengan que estar en la misma partición. La forma es tener un directorio de Dropbox típico, y sincronizar en él otros directorios del sistema, de forma transparente. Ello implica tener los datos duplicados, claro está: los datos originales en directorios esparcidos por el disco duro, y la copia de esos archivos en el directorio de Dropbox. Para algunos esto supondrá un problema, pero teniendo en cuenta que seguro que la mayoría de vosotros utilizáis una cuenta free, el máximo de espacio extra ocupado estará entre los 2 y los 8 GB.

¿Datos duplicados? Eso no suena bien

En principio puede parecer poco recomendable tener datos duplicados, pero nosotros en realidad nos desentendemos por completo de la copia de Dropbox. Lo que hacemos es trabajar con los archivos originales, sin pensar en Dropbox; un script de fondo se encargará de la sincronización en segundo plano, que  transmitirá al directorio de Dropbox todos los cambios que hagamos en los archivos originales. Lo mismo ocurre en sentido inverso: todos los cambios que sufran los archivos de Dropbox en otra máquina, serán sincronizados con los archivos de nuestra máquina, de forma automática.

El directorio que se encarga de sincronizar Dropbox lo podremos tener oculto, para facilitar el despreocuparnos de él. Programaremos, entonces, un script al que le indiquemos una serie de directorios que deseamos mantener sincronizados con el directorio de Dropbox. Este script se ejecutará en segundo plano, cada cierto tiempo, actualizando bidireccionalmente el directorio de Dropbox con los otros directorios.

Vale, me gusta la idea. ¿Cómo lo hago?

He escrito un script muy sencillo, el cual haremos ejecutar al inicio de cada sesión. El script realizará una actualización cada cierto tiempo, mediante el comando UNISON, por lo que deberás instalarlo previamente si no lo tienes; en Ubuntu basta con un

$ sudo apt-get install unison

El script completo puedes descargarlo haciendo clic aquí, y su contenido es el siguiente:

#!/bin/bash
 
#############################################################
# Script demonio de sistema que sincroniza varios directorios
# con otro directorio dado, de forma automática y bidireccional
# SERGIO GARCIA MONDARAY
# www.yakiboo.net
#############################################################
 
# Directorios fuente (no pueden contener espacios)
sources=("/home/sgm/UCLM/ISI /home/sgm/Proyectos")
# Directorio destino
destiny="/home/sgm/.dropbox-data/Dropbox"
# Archivo de log
log="/home/sgm/.bidirsync.log"
# Tiempo de espera entre checkeos cuando no hay dispositivo (en segundos)
wait=60
 
# Se inicia el chequeo periodico
while(true)
do
	for f in $sources
	do
	    echo BidirSync sincronizando el directorio $f en $destiny$f...
 
	    mkdir -p $destiny$f
	    unison -auto -confirmbigdel=false -silent $f $destiny$f >> $log
 
	done
 
	echo BidirSync durmiendo ...
    sleep $wait # Esperamos un tiempo hasta el siguiente checkeo
 
done

Como puede observarse, deberemos configurar los directorios a sincronizar y el directorio de Dropbox (o directorio destino), así como un archivo de log. Si lo deseas, también puedes modificar el tiempo entre sincronización y sincronización.

Copia de seguridad

Es muy importante que hagais una copia de seguridad de los directorios que deseais sincronizar, así como del contenido de Dropbox si no está vacío. No me responsabilizo de pérdidas de datos por meteduras de pata. XD

Espero que os sea tan útil como a mí, que lo tengo funcionando constantemente en el PC.

Escrito por sgm


Puedes dejar un comentario, o referenciar este post desde tu sitio web.

Hay 4 comentarios en este post.

 
AegLos Enero 8, 2011 Reply

Si no quieres andar ejecutando cada vez que inicias sesion, añadelo al bashrc, o programa una tarea en el cron!

 
AegLos Enero 8, 2011 Reply

Por cierto, me han pisado la idea, porque tengo a medias un script que hace algo parecido, y ademas hace otras cosillas.
Te lo comentare cuando lo termine.

 
sgm Enero 8, 2011 Reply

@AegLos
Para que el script se autoejecute al iniciar sesión, lo más cómodo es añadirlo a “Aplicaciones al inicio” (en GNOME), o similar.
Una entrada de cron sería más útil si el script no se encargase por sí mismo de dormir y despertar. Tal y como está enfocado no le veo mucho sentido a cron.

 
AegLos Enero 8, 2011 Reply

Cron, para tareas periodicas, por si no quieres que Dropbox este constantemente comiendote conexion: En plan, quiero que me actualices los archivos una vez al dia.

Y añadirlo al .bashrc es lo mismo que aplicaciones al inicio, practicamente, solo que lo haces para tu solo usuario.

Responde