Google Drive en Linux y Raspberry Pi (con Insync)

Uno de los requisitos que tiene mi sistema de videovigilancia en Raspberry es que, además de avisar por mail cuando detecta movimiento, ha de guardar en Google Drive las imágenes y un vídeo con lo que ocurre. Por eso necesitaba utilizar Google Drive en Linux, y específicamente, en mi Raspberry Pi.

En este artículo comparto mi experiencia y documentación de cómo configurar Drive utilizando Insync.

Google Drive en Linux: Por qué Insync

Al principio utilizaba Grive, un producto open source y gratis, que funcionaba muy bien. Pero debido a unos cambios en la API de Drive, de un día para otro dejó de funcionar. Además tenía la desventaja que había que decirle que existían cambios en los ficheros, y recién ahí se encargaba de sincronizar.

Me decidí por Insync porque:

  • es automático: cuando detecta cambios (en la nube o en local), se encarga de mantener todos los ficheros sincronizados.
  • funciona en Raspberry Pi: necesitaba usar Drive en Raspberry Pi y, en ese momento, era la única solución que funcionaba.
  • funciona con línea de comando: mi Raspberry tiene que ser capaz, de manera autónoma, de subir y modificar ficheros a través de cualquier script
  • funciona de maravilla 🙂

Otras ventajas de Insync, que no son relevantes para mi proyecto, pero que son muy interesantes:

  • Múltiples cuentas en un sólo dispositivo
  • Convierte Documentos de Google Documents a documentos Office y OpenDocument (OpenOffice y LibreOffice)
  • Tiene notificaciones de escritorio
  • Sincronización selectiva

La única desventaja, se trata de un producto de pago. Cuesta 20 dólares por única vez, por cuenta. Creo que es totalmente asumible, por lo menos para el proyecto de videovigilancia que he montado.

Instalando Insync

En Linux para PC, hay varias maneras de instalarlo. Con repositorios o bajándose los paquetes. En Debian sólo me funcionó la opción de bajar al versión portable (más abajo)

Para instalar Insync en Debian Jessie

1) Agregar la llave pública de GPG:

wget -qO - https://d2t3ff60b2tol4.cloudfront.net/services@insynchq.com.gpg.key \ | sudo apt-key add -

2) Editar sources.list (normalmente en /etc/apt), y agregar esta línea:

deb http://apt.insynchq.com/debian jessie non-free contrib

3) Actualizar el repositorio

sudo apt-get update

4) Instalar Insync

sudo apt-get install insync

Instalar Insync en Raspberry Pi (versión potable y de comando)

La instalación en Raspberry la hice con línea de comandos, y es muy fácil. Lo bueno, es que se trata de una instalación portable, esto es, sólo necesitas un directorio, y de hecho lo puedes mover y “llevarte” Google Drive allí donde lo necesites. Si alguna vez necesitas, por ejemplo, cambiar de Raspberry, sólo con copiar esa carpeta ya lo tendrás funcionando en otra Raspberry.

Aquí están los pasos a seguir:

1) Determinar qué arquitectura de Raspberry tenemos (armhf o armel) Para ello:

readelf -A /proc/self/exe | grep Tag_ABI_VFP_args

Si obtenemos un resultado tenemos una Raspberry armhf, de lo contrario, es armel.

Google Drive en Raspberry detectando arquitectura

2) Bajar el paquete que corresponda (a armhf o armel)

De este enlace: Insynchq.com

3) Ir al directorio donde quieras tener Insync portable, en mi caso ~/

tar -xjf [fichero-que-te-has-descargado.bz2]

Esto creará un directorio llamado insync-portable

4) La primera vez que ejecutes isync portable, debes configurar la cuenta de Google que quieres tener sincronizada. Para ello debes visitar este enlace, que creará un código de autorización para que Insync se vincule a tu cuenta:

https://goo.gl/jv797S

Google Drive en Linux autorizando

Este enlace, después de darle autorización a Insync, te devuelve un código, que has de agregar a Insync. El código que te devuelve este proceso es algo así:

Google Drive en Linux codigo de auth

 

Para finalizar, agrega ese código con el siguiente comando:

./insync-portable add_account -a codigo-devuelto

Una vez vinculado Insync con la cuenta de Google Drive que queremos, ya podemos comenzar a sincronizar los ficheros. Para ello utilizamos el comando start

./insync-portable start

Si quieres ver una lista de los comandos que puedes pasarle a Insync, ejecuta

./insync-portable help

Automatizando Google Drive en Raspberry Pi

Para configurar el arranque automático de Insync, yo he hecho esta script. Este script va en /etc/init.d y yo lo llamé isync

#!/bin/sh
### BEGIN INIT INFO
# Provides: insync
# Required-Start: hostname $local_fs
# Required-Stop:
# Should-Start:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Gestiona insync, el cliente de Google Drive en Linux
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/init/vars.sh

do_start () {
# Arrancamos insync
# Google Drive en Raspberry Pi

echo Arrancando insync
cd /home/pi/insync-portable/client
sudo -u pi ./insync-portable start

}

do_status () {
echo No implementado
}

do_stop () {
echo Cerrando insync

cd /home/pi/insync-portable/client
sudo -u pi ./insync-portable quit
}

case "$1" in
start)
do_start
;;

restart|reload|force-reload)
echo "Error: argumento '$1' no implementado" >&2
exit 3
;;
stop)
do_stop
;;
status)
do_status
exit $?
;;

*)
echo "Uso: insync [start|stop]" >&2
exit 3
;;
esac
:

Y para activar este script al arranque, recuerda ejecutar:

sudo update-rc.d isync defaults

Y de esta manera, cualquier cambio que haya en Google Drive, en cualquier dispositivo, se mantiene sincronizado. Si la Raspberry detecta movimiento, copia los ficheros a la carpeta de Insync y éste se encarga de subir las imágenes a mi Google Drive.

Simple pero efectivo 🙂

Espero que con este artículo puedas tener funcionando tu Google Drive en Linux

Fuente de la documentación: página oficial de Insync

Google Drive en Linux y Google Drive en Raspberry Pi

4 comentarios:

  1. Saludos

    Estoy siguiendo el post como lo indica pero al introducir la ultima linea de código [sudo update-rc.d isync defaults] recibo un mensage de error [insserv: script isync is not an executable regular file, skipped!].
    Seguó todos los pasos descritos en el post (versión portable y de comando), no se si tenga algo que ver con que el Insync sea pagado y no he adquirido ningún código para usarlo.

    Agradecería mucho alguna sugerencia del porqué no puedo hacer uso del último comando.

    • Hola Fabián.

      El error isync is not an executable, parece que es porque el fichero no tiene permisos para ejecución.

      Prueba lo siguiente, vas a la carpeta donde se encuentra el fichero (normalmente /etc/init.d) y allí haces sudo chmod a+x isync

      Con eso debería funcionar.

      Saludos

  2. En mi raspbia no encuentro nada aca deb http://apt.insynchq.com/debian jessie non-free contrib
    para instalar
    Cual otro repositorio puede ser?

    • Hola Mauro, efectivamente hay un problema con el repositorio oficial. Yo acabo de instalar un Insync en otra Raspberry y lo que hice fue bajar el paquete “portable” e instalarlo a mano.

      Saludos
      Alfonso

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *