Índice
Llevaba tiempo buscando la manera de sincronizar los archivos de Google Drive en Linux con carpetas locales del mismo modo que Dropbox. Pensé en usar el programa inotify, pero no sabía muy bien por donde empezar. Hace unos días encontré la respuesta en openlinuxforums y al parecer no iba mal encaminado, es una solución bastante sencilla usando inotify y nos permitirá mantener sincronizados los archivos y carpetas de Google Drive en todos los ordenadores que queramos.
Hay una modificación para este método en Sincronizar Google Drive en Linux en 4 pasos [Actualización]
1. Preparar el entorno
Es recomendable crear un directorio bin para alojar los scripts necesarios:
mkdir ~/bin
Para asegurarse de que la carpeta se ha añadido al PATH cierra sesión y vuelve a entrar, ahora debería aparecer el directorio creado en la variable PATH
echo $PATH
2. Crear la carpeta local a sincronizar
En esta carpeta se descargarán y mantendrán sincronizados los ficheros de Google Drive:
mkdir ~/Drive
Ahora instalamos grive:
En debian:
$ sudo apt-get install grive
En Ubuntu:
$ sudo add-apt-repository ppa:nilarimogard/webupd8
$ apt-get update
$ apt-get install grive
Nos autentificamos y otorgamos los permisos necesarios a Grive:
cd ~/Drive && grive -a
El comando de arriba mostrará un link, clica en él y autoriza a Grive para que pueda acceder a Google Drive.
3. Sincronizar automáticamente los ficheros de la carpeta local
Instala inotify-tools si es necesario:
$ sudo apt-get install inotify-tools
Ahora crearemos un script que monitorize la carpeta local para detectar cualquier cambio (Script gracias a Peter Österberg, 2012):
#!/bin/bash
# Google Drive Grive script that syncs your Google Drive folder on change
# This functionality is currently missing in Grive and there are still no
# official Google Drive app for Linux coming from Google.
#
# This script will only detect local changes and trigger a sync. Remote
# changes will go undetected and are probably still best sync on a periodic
# basis via cron.
#
# Kudos to Nestal Wan for writing the excellent Grive software
# Also thanks to Google for lending some free disk space to me
#
# Peter Österberg, 2012
GRIVE_COMMAND_WITH_PATH=/usr/bin/grive # Path to your grive binary, change to match your system
GDRIVE_PATH=~/Drive # Path to the folder that you want to be synced
TIMEOUT=300 # Timeout time in seconds, for periodic syncs. Nicely pointed out by ivanmacx
while true
do
inotifywait -t $TIMEOUT -e modify -e move -e create -e delete -r $GDRIVE_PATH
cd $GDRIVE_PATH && $GRIVE_COMMAND_WITH_PATH
done
Modifica las rutas conforme a tu configuración y dale permisos de ejecución:
$ chmod +x grive.sh
Por último añadelo a las aplicaciones de inicio. Dependiendo de la distribución que uses el método puede variar en Xfce dirígete a Settings » Sesiones e Inicio » Pestaña aplicaciones » ánadir.
4. Añadir una entrada a cron para sincronizar los cambios remotos
Hasta el momento, los únicos cambios que se sincronizan son los locales, para lograr detectar cambios en Google Drive añadiremos una entrada a cron. Para ello ejecutamos el comando crontab -e
y añadimos la siguiente línea:
*/10 * * * * cd "$HOME/Drive" && grive >/dev/null 2>&1
Con esto grive detectará si ha habido cambios en el servidor remoto cada 10 minutos.
Modificaciones sobre el script original
A los scripts mencionados arriba les hice unas pequeñas modificaciones que muestro a continuación.
Mi entrada en el crontab es la siguiente:
*/10 * * * * cd "$HOME"/Drive && grive > /tmp/GRIVE_LOG
La única diferencia es que guardo la salida del programa en un fichero temporal a modo de log, dentro de poco veremos por qué.
Yo uso xmonad, y para lograr que grive se ejecute al iniciar sesión añadí una línea al script que es ejecutado cuando me loggeo:
exec /home/hkr/bin/grive.sh 2>&1 | tee /tmp/GRIVE_LOG &
De nuevo vuelvo a redirigir la salida del programa a un fichero, esta vez con tee.
Por último, en este mismo archivo, añadí otra línea para que se muestre el fichero que estoy usando como log en el escritorio, y poder así observar si se están sincronizando correctamente los archivos:
xrootconsole --wrap --bottomup -geometry 233x16+5+570 /tmp/GRIVE_LOG &
Hace algún tiempo expliqué cómo usar xroot en el artículo Cómo tener un terminal transparente como wallpaper que muestre información
Conclusión
Con estos 4 pasos hemos conseguido mantener sincronizado nuestro Google Drive en Linux, y por el camino, al menos yo, he aprendido unas cuantas cosas. ¿Qué os parece?, ¿usáis alguna otra alternativa para lograr el mismo funcionamiento? Dejad un comentario.
El resultado de estas modificaciones es el siguiente:
Referencias
- Howto: Auto-sync Google Drive to a local folder with Grive. Ubuntu & Debian »» openlinuxforums.org
- Créditos de la imagen »» plus.google.com
¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.