[Bash] Subir ficheros a Dropbox desde la terminal

controlar directorios dropbox desde bashEn uno de los últimos experimentos que he estado haciendo se me planteó la necesidad de subir imágenes a una cuenta de Dropbox desde una máquina en la que no me “interesaba” montar el cliente de Dropbox (sólo quiero subir un fichero cada cierto, nada de tener más de la cuenta en ese ordenador ;))

Por fortuna, Andrea Fabrizi (grazie Andrea) tuvo la misma necesidad y nos ha regalado la forma de conectar, utilizando cUrl, contra la API de Dropbox.

Pasa, te cuento cómo hacerlo.

Preparando lo necesario

Aunque el funcionamiento está muy bien explicado por el autor, os comentaré aquellos pasos que puedan resultar algo más “truculentos” (la primera vez que se intenta).

Lo primero que tienes que hacer es descargar el script del GitHub de Andrea.

Dale permisos de ejecución al fichero descargado (botón derecho > Propiedades o un chmod a+x sobre él) y lánzalo desde la terminal.

Ejemplo de uso

La sintaxis para subir un fichero es

./dropbox_uploader.sh upload
/tmp/miFichero.jpg
/Public/images/claves.jpg

Donde

  1. upload es el comando a lanzar de los varios (delete, mkdir, list, …) que admite el script; en este ejemplo subiremos un fichero a Dropbox
  2. /tmp/miFichero.jpg es el fichero de mi disco duro (local) que quiero subir a Dropbox
  3. /Public/images/claves.jpg he optado por subirlo el fichero a la carpeta /Public/images de mi Dropbox y renombrarlo como claves.jpg

La primera vez…

…vez que lancemos el script nos pedirá que nos conectemos a una dirección web

This is the first time you run this script.
Please open this URL from your Browser, and access using your account:

-> https://www2.dropbox.com/developers/apps

Introduce en cualquier navegador la url proporcionado por el script y haz login en tu cuenta de Dropbox.

NOTA: si no has creado antes una aplicación utilizando la API de Dropbox, acepta los términos y condiciones 🙂

Crea una aplicacion introduciendo los datos que te ofrece el script; en mi caso tengo

App name: MyUploader27277479
App type: Core
Permission type: App folder or Full Dropbox

NOTA: la diferencia entre App folder y Full Dropbox es que el primero sólo permite acceder a los directorios que cuelgan de /Aplicaciones/MyUploader27277479 (directorio asignado a tu aplicación de nombre  MyUploader27277479) mientras que el segundo (Full Dropbox) te da control total de cualquier directorio de tu cuenta. A mi me interesa el segundo porque necesito acceso a la carpeta Public de Dropbox desde IFTTT 🙂

En el formulario web, los datos quedan del siguiente modo.

crear aplicaciones dropbox

Una vez creada, podrás añadir una descripción del programa e incluso, si lo deseas, personalizar el icono para que te resulte más fácil localizarla (si creas muchos aplicaciones para Dropbox jeje).

Realmente lo que nos interesa es

obtener clave secreta aplicación dropbox

que deberemos introducirlo en el script para que pueda acceder sin problemas a Dropbox

acceder dropbox desde cli linux

NOTA: observa que he utilizado f para acceso Full a Dropbox que es lo que me interesa.

Como paso final y, para permitir acceso al script a nuestra cuenta de Dropbox, tendremos que volver a introducir otra url en el navegador

habilitar app para acceder dropbox

y darle permisos

subida ficheros desde la línea de comandos

Una vez hecho, no olvides pulsar Enter en la ventana de la terminal.

Se acabó

Prometo que todo este “jaleo” sólo se hará la primera vez que intentes subir un fichero; a partir de ese momento podrás utilizar cualquier comando contra tu cuenta de Dropbox de los que permite el script de Andrea Fabrizi sin necesidad de configurar nada “gracias” a que guardará toda la información en el fichero $HOME/.dropbox_uploader.

Con este script, un bonito cron e IFTTT consigo evitarme algún que otro quebradero de cabeza con el firewall y el SMTP de mi instituto ;).

¿Qué utilidad se te ha pasado a ti por la cabeza tras leer el artículo? Estamos deseando gozar con una “lluvia de ideas” ¡Anímate a compartir lo que estás pensando!

11 comentarios en “[Bash] Subir ficheros a Dropbox desde la terminal

  1. Mi problema con bash es con las carpetas. No consigo mover un archivo que contenga espacios dentro de otra carpeta. No me obedece aunque si no está dentro del script bash la orden funcione perfectamente, pero bueh…

  2. Muy buena José, siempre es bueno tener alternativas de uso a los servicios “más necesarios”.
    Por cierto, no había visto que ya estás de nuevo más activo en tu blog, me alegra. Saludos.

  3. Pingback: Bitacoras.com
    • Seguramente sí, Santiago.

      Mi proyecto era para un “servidor” Linux y había implementado la funcionalidad en Bash por lo que me vino bien.

      Sería cuestión de buscar algo parecido en Python; si alguien encuentra algo se le agradecerá que deje un comentario.

      Suerte y un saludo

  4. Guillermo dijo:

    bpmatec@ninefourubuntu:/home/ARIS$ sudo ./dropbox_uploader.sh upload logfiles.zip /Public/logfiles.zip
    Error loading data from /home/bpmatec/.dropbox_uploader…
    It is recommended to run ./dropbox_uploader.sh unlink
    bpmatec@ninefourubuntu:/home/ARIS$

    El unlink no funciona, que hago ahora? :/

    Saludos,

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s