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

8 comentarios:

  1. Hola, ¿qué comandos usar para sincronizar una carpeta específica en la Raspberry Pi? He seguido tu procedimiento (menos lo de la automatizacioón con el script en init.d) pero no veo que nada esté sincronizado con Drive, a pesar de que la cuenta de correo ha sido añadida satisfactoriamente. Cuando utilizo » ./insync-portable get_status »
    la respuesta es : » SYNCED » . Pero voy a mi correo, reviso mi google Drive pero no hay nada.

  2. Hola Alfonso,
    Estoy con el tema del arranque automatico, tanto si es desde copy paste de la web o descargandome el fichero me da este error:

    insserv: Script isync is broken: missing end of LSB comment.
    insserv: exiting now!
    update-rc.d: error: insserv rejected the script header

    Es como si el script no estubiera bien, pero no encuentro el error.

    Un Saludo,

    • Hola David, siento el retraso en contestar.

      ¿Tienes todavía este problema? ¿Tienes el script que te da el error así le echo un vistazo?

      Saludos
      Fon

  3. 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

  4. 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

      • Hola Alfonso, descargué y descomprimí Insync para mi Raspberry pi, pero cuando uso el comando » ./insync-portable start » y luego trato de añadir una cuenta con » ./insync-portable add_account -a CLAVE » , me responde con el siguiente mensaje: » Insync doesn’t seem to be running. Start it first. «. Pero ejecuto el primer comando una y otra vez y siempre me responde igual cuando trato de usar cualquier otro comando. ¿Sabes por qué da ese error la raspberry?

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.