Raspberry Pi & Dropbox

Bonjour à tous, comment allez-vous? Un peu mieux que moi j’espère… Je me retrouve coincé chez moi pour une semaine ou plus à cause d’un limbago. Certes je ressemble à un petit vieux de 90 ans, il ne manque plus que la canne, par contre mon cerveau tourne encore bien… Alors autant en profiter pour rédiger un article…

Comme le suggère le titre, aujourd’hui on va parler de stockage en ligne sur le Rasberry Pi. En effet c’est toujours un problème de transférer des fichiers depuis son Raspberry Pi vers un ordinateur ou inversement… Je vous avais déjà donné quelques façons de ce faciliter la vie :

Dans cet article je vais donc vous expliquer comment installer Dropbox sur votre Raspberry Pi et bien entendu comment vous en servir.  Vous me direz où est la difficulté? Il y a une version de Dropbox pour Linux…

Sauf que cette version de Dropbox pour Linux ne fonctionne pas sur architecture ARM et donc pas moyen de la faire tourner sur notre Raspberry Pi…

J’ai pas mal lu sur le sujet, diverses solutions sont possibles, mais celle qui reste pour moi la plus simple à utiliser et surtout à mettre en place est l’utilisation du script de Andrea Fabrizi…

Il est également possible d’utiliser Google Drive via une application : grive. Mais il faut compiler l’application vous même (environ 1H) et il est plus difficile d’automatiser les tâches. En gros, il n’y a pas moyen de faire ce que je veux avec grive ou cela ne fonctionne pas…

En fait, on ne va pas installer une application pour Dropbox, mais un script qui nous permettra de réaliser des opérations sur notre compte Dropbox via une application que l’on va créer. Dit ainsi c’est compliqué, en pratique cela prend moins de 20 minutes si vous avez déjà un compte Dropbox…

Attention : toutefois comme on installe un script et non une application, la synchronisation ne se fera pas automatiquement. Je vous laisse descendre au paragraphe Utilisation & Automatisation si vous voulez comprendre comment on utilise le script. Mais vous vous rendrez bien vite compte que avoir accès à Dropbox via un script est mieux que de ne pas avoir accès à Dropbox du tout…

Pré-requis :

  • Un compte Dopbox
  • Un Raspberry Pi (A ou B) connecté à internet

1 – Obtenir le script :

Une fois que vous êtes connecté sur votre Raspberry Pi, rendez-vous dans le dossier où vous voulez copier le script pour moi /home:

cd /home
Changement de dossier
Changement de dossier

Puis on télécharge le script grâce à :

git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
Téléchargement du script
Téléchargement du script

et on vérifie que tout est bien copié avec :

ls
Vérification du téléchargement
Vérification du téléchargement

Personnellement j’utilise cette technique sur un petit Timelapse secret (que je posterai plus tard) pour envoyer automatiquement les photos prises sur mon Dropbox. J’ai déplacé le script dans le dossier qui m’intéresse (ce n’est pas obligatoire pour vous mais pensez bien à changer les chemins d’accès au fur et à mesure) :

sudo mv /home/Dropbox-Uploader/dropbox_uploader.sh /home
Déplacement du script
Déplacement du script

On autorise le script a être exécuter :

sudo chmod +x dropbox_uploader.sh

Et on lance le script pour la première fois :

sudo ./dropbox_uploader.sh

Ce qui nous affiche :Connexion Application

Connexion Application

Le script nous demande un App Key que nous n’avons pas, forcement nous n’avons pas encore créé notre application sur le site de Dropbox. On passe donc à la seconde étape.

2 – Créer l’application sur votre compte Dropbox :

Rendez-vous sur : https://www.dropbox.com/developers/apps Créez une nouvelle application et régler là comme ce-ci :

Configuration appplication
Configuration appplication

Comme on veut stocker des fichiers et y avoir accès on choisit l’API Dropbox. L’option files and datastores nous permets de stocker tout et n’importe quoi comme fichiers (des photos, des scripts etc…). J’ai limité l’application à son seul dossier mais vous pouvez choisir de donner accès à tout votre Dropbox… Puis enfin donné un nom à votre application et cliquez sur Create app. Vous allez vous retrouvez sur la page de résumé de votre application

Résume Application
Résume Application

Vous avez sur le bas de la page votre App Key and votre App Secret (j’ai caché les miens sinon vous allez pouvoir vous connecter sur mon Dropbox…)

3 – Connecter le script et votre application :

Rentré votre APP Key,  votre App Secret et les permissions (tout votre Dropbox « f » ou juste un dossier « a » ). Vérifiez les informations et confirmez les appuyant sur « y » :

Connexion à l'application
Connexion à l’application

Puis rendez-vous sur le lien que le script vous affiche dans votre navigateur web vous devriez voir :

Autorisation Application
Autorisation Application

Autoriser votre application en cliquant sur le bon bouton :

Application Liée
Application Liée

Retourner sur votre script et appuyez sur « Entrée » :

Réglages OK
Réglages OK

Et voila, Dropbox est maintenant opérationnel sur votre Raspberry Pi…

4 – Utilisation & Automatisation :

Comme  je l’ai dit plus haut ici on installe un script et pas une application. A ce niveau là du tutoriel, normalement aucun fichier n’a été envoyé vers votre Dropbox. C’est normal car il faut en fait dire au Raspberry Pi de lancer le script pour effectuer une opération… Toutes les commandes et paramètres sont disponibles ici : GitHub Andrea Fabrizi

Comment fait-on? C’est assez simple voici la syntaxe à adopter si vous êtes dans le bon dossier :

sudo ./dropbox_uploader.sh [paramètres] commande 

Et la syntaxe peut importe où que vous soyez (avec le chemin absolu dans mon cas home) :

sudo /home/./dropbox_uploader.sh [paramètres] commande 

Quels sont les paramètres disponibles et vraiment utiles ?

  • -s Saute les fichiers qui existent déjà lors de l’upload ou du download. Par défaut le script écrase les fichiers (il réécrit le même fichier).
  • -d Active le mode debug pour avoir plus d’informations si quelque chose ce passe mal.
  • -q Mode réduit, la barre de progrès et les messages du script sont cachés.
  • -p Montre une barre de progression si cURL est installé sur votre Raspberry Pi.

Quelles sont les commandes disponibles ?

  • upload <LOCAL_FILE/DIR …> <REMOTE_FILE/DIR>
    Envoyer un fichier ou un dossier sur votre Dropbox. Si le fichier fait plus de 150Mb, il sera envoyé en utilisant des petits morceaux de 4Mb. Dans ce cas là, un point (.) est affiché pour chaque morceau envoyé avec succès et une étoile (*) est affichée si un morceau n’a pas été envoyé comme il faut. L’envoi est réessayé 3 fois avant abandon. L’utilisation de l’API standard ne ce fait que pour des fichiers inférieurs à 150Mb. (Parfait pour des photos donc…)
  • download <REMOTE_FILE/DIR> [LOCAL_FILE/DIR]
    Télécharger un fichier ou un dossier depuis Dropbox vers votre Raspberry Pi.
  • delete <REMOTE_FILE/DIR>
    Supprimer un fichier ou un dossier de votre Dropbox.
  • move <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
    Déplacer ou renommer un fichier ou un dossier.
  • copy <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
    Copier un fichier ou un dossier.
  • mkdir <REMOTE_DIR>
    Créer un dossier sur votre Dropbox.
  • list <REMOTE_DIR>
    Vous donne un liste du contenu du dossier.
  • share <REMOTE_FILE>
    Obtenir un lien public de partage pour le fichier ou le dossier spécifié.
  • info
    Affiche des infos de votre Dropbox
  • unlink Casser le lien entre votre Dropbox et le script de votre Raspberry Pi

Un exemple si je veux envoyer toutes les photos d’un coup qui sont contenu dans un dossier je vais utiliser dans mon cas :

sudo /home/./dropbox_uploader.sh -s upload /home/timelpase /timelapse

Je demande donc au Raspberry Pi de lancer dropbox_uploader.sh en évitant les fichiers déjà présents en ligne (-s). Je veux envoyer tout le dossier /home/timelapse (là où toutes mes photos sont enregistrées) vers le dossier /timelapse en ligne. Et miracle mes photos arrivent :

Miracle photographique automatique
Miracle photographique

Dernier point, vous vous doutez bien que je ne vais pas à chaque fois me connecter à mon Raspberry Pi et taper cette commande pour avoir mes photos mises en ligne. On va donc lancer automatiquement le script grâce à cron :

sudo crontab -e
Automatisation avec crontab
Automatisation avec crontab

Ajoutez cette ligne à la fin :

*/30 * * * * sudo /home/.dropbox_uploader.sh -s upload /home/timelapse /timelapse
Crontab modifié
Crontab modifié

Un petit « Ctrl+X » pour quitter, un petit « y » pour sauvegarder les changements, enfin un « Entrée » vous ramènes à la console.

sudo reboot

Pour tout mettre en place comme il faut… Félicitations, votre Raspberry Pi enverra toutes les 30 minutes les dernières photos qu’il a prise directement dans votre Dropbox…

Voila il ne vous reste plus qu’à vous amusez avec votre Dropbox & votre Raspberry Pi

😃

23 réponses sur “Raspberry Pi & Dropbox”

      1. Bonjour, voila j’ai installé le script le transfert vers db est ok mais si je place un « -s » après upload pour éviter l’écrasement des fichier j’ai à ce moment
        « readlink: opérande manquant
        Saisissez « readlink –help » pour plus d’informations.
        > No such file or directory:
        > Uploading « /home/f8izt/SL370462.JPG » to « /iztcam_db/cam1/SL370462.JPG »… DONE

        la dernière ligne est ma commande de transfert avec le -s sa coince !!

        sudo /home/f8izt/dropbox_uploader.sh upload -s /home/f8izt/SL370462.JPG /iztcam_db/cam1/

        merci de votre aide
        cdlt
        JC

        1. Re: autant pout moi j’ai inversé l’ordre « -s upload » ne pas faire « upload -s » ! ca fonctionne correct maintenant

          cdlt

  1. Bonjour, j’ai installé le script tout fonctionne sauf les fichiers « timelapse***.jpg » qui ne sont pas envoyés dans le dossier « Timelapse », ils sont envoyés dans « Raspicam_Home ».

    Quand on relance le srcipt il me recrée un dossier « TimelapseTimelaspe » et les copies des fichiers « timelapsetimelapse***.jpg » de nouveau dans « Raspicam_Home ».

    Que faut-il faire pour qu’ils arrivent dans le dossier « timelapse » et qu’il ne me recrée pas un nouveau dossier à chaque fois.
    Je précise que j’ai bien mis le paramètre « -s ».

    Merci.

    1. Bonjour Marc, comment allez-vous?

      A mon avis le soucis vient des chemins d’enregistrement déclarés dans le script photo et le programme d’upload… Pouvez vous me le donner?

      Avez-vous vu mon dernier article sur le Raspberry Pi qui utilise une autre méthode plus fiable pour envoyer des photos sur un FTP?

  2. bonjour ,super tuto tres bien expliqué grand merci
    j ai motion sur le raspberry qui enregistre des tonnes de photo
    est ce que c est possible avec une commande de prendre les photos dans tmp/motion et me les envoyer dans dropbox ,classé par jour
    je suis trop gourmand peut etre 🙂

    1. Bonjour Manuel, comment allez-vous?

      Pour répondre à votre question, Dropbox n’a pas d’application native sur Raspbian, vous pouvez utiliser le script présenté dans cet article pour utiliser Dropbox de façon sommaire… Le gros problème de ce script c’est qu’il ne permet pas de supprimer les photos uploadées pour gagner de la place sur la SD du Pi. Du coup si vous supprimez une photo sur dropbox le Pi la renvoie… Où si vous votre Pi perd la connexion Wifi les photos s’accumule et quand le Pi se reconnecte il upload tout… De plus il vous faut aussi changer le répertoire de sauvegarde des photos dans le fichier de configuration de Motion…

      Pas très pratique… Je prèfere maintenant envoyer mes photos sur un FTP perso grâce à ncftp. Si vous voulez une idée de comment je l’utilise, je vous conseille de passer voir cet article : http://anderson69s.com/2014/06/28/raspberry-pi-picam-camera-de-securite/ et de vous rendre au paragraphe 6 : Automatisation de l’envoi des photos sur un http://ftp...

      Cordialement, Anders

  3. bonsoir.Tout d abord bravo pour votre site et tous les articles sur le PI.
    Je possède un PI avec OSMC depuis quelques temps et j en suis vraiment satisfait. Je me sers d un site (sora.io) pour le stockage de divers dossiers, photos et vidéos que je lis en ftp sur OSMC. Jusque la tout va bien. Je souhaite télécharger et mettre sur le DD qui est branche sur le PI certaines vidéos.
    Connaissez vous une solution pour soit synchroniser régulièrement un dossier sur le site soit télécharger a la demande un dossier ou fichier determine ? Existe t il un scraper sur OSMC comme celui fait pour Dropbox qui permettrait tout cela ?
    Je ne suis pas doué en ligne de commande d ou l intérêt du scraper mais je reste ouvert a toutes autres propositions.
    Je reste a votre écoute.
    Merci et surtout continuez vos articles sur le PI

    1. Bonjour Françis, comment allez-vous?

      Merci pour vos encouragements, ça n’a l’air de rien mais psycologiquement cela m’aide beaucoup…

      Pour répondre à votre question, je ne connaissais pas du tout Sora cest bien la première fois que j’en entends parler… Ce n’est dans tout les cas pas très grave car si je comprends bien c’est en fait un serveur auquel vous avez accès via certains protocoles… Il y a pleins de sites proposants ce genre de services…

      Je pense qu’il n’y aura pas de scraper spécifique pour Sora… Par contre un scraper qui permet de synchroniser un dossier avec un FTP c’est plus jouable… Sinon même si vous n’aimez pas les lignes de commande, vous pouvez passer par ncftp comme dans mon article suivant : http://anderson69s.com/2014/06/28/raspberry-pi-picam-camera-de-securite/

      Mais au lieu d’envoyer les photos sur le sites toutes les 7 minutes, il faudra adapter la commande dans crontab -e en fonction de vos besoins pour récupérer votre dossier.

      Cordialement, Anders

  4. Bonjour et merci pour ce tuto de qualité.
    Je voudrais savoir si vous pouviez m’aider sur un problème sur l’automatisation du transfert de fichier, car j’ai bien éditer le fichier mais la vérification toute les 5 min pour moi avec ensuite le transfert ne s’effectue pas.

      1. Et bien en fait lorsque que j’edit le fichier avec « sudo contrab -e » pour rajouter la ligne qui automatise le transfert de fichier vers ma Dropbox, j’enregistre le fichier puis je reboot, l’automatisation ne fait pas effet. J’espère que c’est un peu mieux expliquer.

        1. Bonjour Pyro, comment allez-vous?

          L’article n’est pas tout récent, utilisez-vous Debian Wheezy ou Debian Jessie? Crontab -e a été déprécié (il n’est plus présent) dans Jessie… Il faut utiliser systemd pour lancer des applications au démarrage maintenant.

          J’ai pour projet de faire un article dessus mais je manque un peu de temps… Normalement, je devrai le faire sous peu…

          Cordialement, Anders

  5. super marche tres bien, plus qu’a test le download automatique et mon bot seras parfaitement fonctionnel 😀
    Bon tuto, il faut que je jette un oeuil sur ce script qui marche a la perfection pour l’instant

    encore merci 🙂

  6. Bonjour
    Jai un problème nouveau suite à la mise à jour sous Jessy
    J arrive à envoyer les photos sur Dropbox
    En revanche je ne peux plus effacer ( message d’erreur token)
    J’ai décidé de détruire là liaison ét de la recréer , ét la je n’ai plus la possibilité de saisir les identifiants appkey et le mot de passe
    Il me proposé uniquement de saisir le token

    Pour résumer mon problème , je n’arrive plus à lier ma raspberry ét mon Dropbox
    Y a til un moyen pour effacér les fichiers de la précédente install ( 1 er piste )
    Comment retrouver l’installation classique ( comme dans le tutoriel ci dessus )
    le système est il encore compatible avec la lisière à jour sous jessie?

    Merci pour vos Lumière

    1. Bonjour Fabrice, j’espère que vous allez bien.

      Je n’ai pas retesté cette technique depuis un sacré bon bout de temps et je ne saurai répondre à vos questions sans vous induire en erreur…

      Vous pouvez toutefois essayé à vos risques et périls de vider le dossier :

      ~/.dropbox_uploader

      Vous ne pouvez vraiment pas repartir d’une installation toute fraîche de Raspbian pour réessayer d’utiliser ce script? Car malheureusement Dropbox, n’a toujours pas été compilé pour Raspbian… Le script a été mis-à-jour et devrait normalement fonctionner sur Jessie.

      Sinon il faut essayer de l’installer en utilisant :

      curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
      chmod +x dropbox_uploader.sh
      ./dropbox_uploader.sh

      N’hésitez pas à me tenir au courant.

      Cordialement, Anders

      Je suis désolé de ne pas avoir de meilleures nouvelles…

  7. Bonjour, merci pour votre tuto.

    je rencontre une erreur lors de l’exécution du script :

    pi@raspberrypi:~/script $ sudo /home/pi/script/./dropbox_uploader.sh -s -p upload /home/pi/toto1 /toto1
    > Creating Directory « /toto1″… FAILED
    > Uploading « /home/pi/toto1/21052017_1802-01.h264 » to « /toto1″…
    ######################################################################## 100,0%
    FAILED
    An error occurred requesting /upload

    Avez vous une idée d’où cela provient ?

    le dossier est correctement créé sur la dropbox

    Merci pour votre aide

    1. Bonjour Loic, j’espère que vous allez bien.

      Je pense que si votre fichier n’est pas envoyé sur le serveur c’est principalement car le script n’a pas réussi à créer le fichier /toto1 sur le serveur. Cela vient sûrement d’un problème de droit.

      Je ne sais pas si le script a été mis-à-jour depuis la rédaction de mon article, je n’aie pas eu besoin de l’utiliser depuis un bon moment.

      Tenez-moi au courant, je chercherai plus en profondeur si vous ne trouvez pas de solutions.

      ++ Anders

  8. Salut,
    Je début en linux…
    Croyez-vous qu’on puisse adapter votre procédure pour uploader sur dropbox une image de la carte SD ?
    @+
    Datawolf

    1. Bonjour Laurent, j’espère que vous allez bien.

      Pas de soucis, on a tous été débutants en Linux un jour 🙂

      Le souci n’est pas d’envoyer l’image sur Dropbox avec cette technique même si une connexion en fibre est préférable pour ce genre d’opération… Le souci est de créer l’image pendant que le Raspberry Pi est en fonctionnement. Je crois qu’il est possible de dupliquer la SD sur une autre SD quand le système tourne, mais c’est tout…

      @Bientôt Anders

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Traduction :