Profiter de sa Dropbox sur son serveur GNU/Linux

Date: 25/10/2010 | Catégories: Open-source,Planet-libre,Systeme | Tags: ,,,,,

Depuis quelques mois, j'utilise le service Dropbox (gratuit jusqu'à 2 Go) pour sauvegarder, partager et synchroniser les fichiers entre mes différentes machines. Souhaitant pouvoir également mon serveur VPS (Ubuntu Server 10.04 LTS) dans ce "cloud" et ainsi permettre la sauvegarde de certains fichiers de mon serveur dans ma Dropbox, il a fallu que je passe outre la limitation du client Dropbox de fonctionner sans un environnement graphique (no-gui...).

Pour tester cette procédure, il faut disposer:

  • d'un compte Dropbox (même un compte gratuit suffit)
  • d'un serveur avec un accès SSH et les droits admin (j'ai validé cette procédure sur un Ubuntu Server 10.04 LTS mais elle doit fonctionner sur d'autre distribution avec quelques adaptations)

Installation du daemon Dropbox

On commence par récupérer le daemon GNU/linux Dropbox sur notre serveur:

cd

wget -O ~/dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86

tar zxvf dropbox.tar.gz

rm -f ~/dropbox.tar.gz

L'archive va être décompressé dans le répertoire ~/.dropbox-dist. Il faut ensuite lancer le programme dropboxd qui va permettre d'associer votre serveur avec votre compte Dropbox.

.dropbox-dist/dropboxd

This client is not linked to any account...

Please visit https://www.dropbox.com/cli_link?host_id=c241bed09af0ae77383c4d89310b08cf to link this machine.

Il faut donc lancer un navigateur Web (depuis votre PC) puis visiter l'URL précédente.

Il se peut que le message suivant s'affiche:

/bin/sh: xdg-open: not found

Il n'a aucun impact sur le bon fonctionnement du daemon dropboxd.

Le programme va ensuite créer votre répertoire ~/Dropbox et y copier le contenu de votre Dropbox (personnellement, j'ai déplacé le répertoire Dropbox vers un disque virtuel attaché à mon VPS puis j'ai créé un lien symbolique entre ce répertoire et mon répertoire ~/Dropbox). Il va également générer un répertoire ~/.dropbox avec un cache et des informations sur votre compte Dropbox.

Une fois terminé, on peut ensuite quitter le programme d'installation avec un CTRL-C.

Automatisation du lancement de Dropbox

On commence par récupérer le script suivant:

http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall/UbuntuStartup

Ensuite on fait un copier/coller du script dans le fichier /etc/init.d/dropbox . On édite ce fichier et on change la première ligne en mettant la liste des utilisateurs Dropbox sur notre serveur. Par exemple, pour un seul utilisateur nommé nicolargo:

DROPBOX_USERS="nicolargo"

Puis on change les propriétés du fichier:

sudo chmod a+rx /etc/init.d/dropbox

Et on automatise le lancement:

sudo update-rc.d dropbox defaults

Enfin on essaye une séquence stop / startpour vérifier que le script fonctionne correctement:

/etc/init.d/dropbox stop

Stopping dropbox...

/etc/init.d/dropbox status

dropboxd for USER nicolargo: not running.

/etc/init.d/dropbox stop

Stopping dropbox...

/etc/init.d/dropbox status

dropboxd for USER nicolargo: running (pid 10996)

Test de la Dropbox

Le plus simple est de copier un fichier dans le répertoire ~/Dropbox et de voir si il est bien copié dans votre Dropbox (attendre quelques secondes/minutes selon la taille de votre fichier)...

touch ~/fichiertest.txt

... à l'inverse, si vous supprimé ce fichier de votre Dropbox, il devrait également être supprimé de votre répertoire ~/Dropbox.

Sur mon serveur VPS Gandi, cela marche du tonnerre 🙂

Aller plus loin avec la ligne de commande

Dropbox propose un script en Python (sous licence libre GPL v3) permettant d'administrer sa Dropbox à partir de la ligne de commande cotre serveur. Pour récupérer et installer la dernière version du script, il faut saisir les commandes suivantes:

cd

wget -O dropbox.py http://www.dropbox.com/download?dl=packages/dropbox.py

chmod a+rx dropbox.py

sudo mv dropbox.py /usr/local/bin/

On lance le script sans paramètre pour voir la liste des fonctions disponibles:

/usr/local/bin/dropbox.py

Dropbox command-line interface

commands:

status       get current status of the dropboxd

help         provide help

puburl       get public url of a file in your dropbox

filestatus   get current sync status of one or more files

ls           list directory contents with current sync status

Les plus intéressantes:

dropbox.py status: affiche ce que le daemon Dropbox est en train de faire (exemple: "Downloading 62 files (630.8 KB/sec, 1 hr left)").

dropbox.py  puburl ~/Dropbox/Public/conky-faenza-nicolargo.tar.gz: affiche l'URL publique de votre fichier.

Maintenir le bouzin à jour

Rien de bien compliqué, une fois la configuration faite, elle restera en mémoire même en cas de mise à jour. La séquence de commande suivante devrait faire l'affaire:

sudo /etc/init.d/dropbox stop

cd

wget -O ~/dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86

tar zxvf dropbox.tar.gz

rm -f ~/dropbox.tar.gz

sudo /etc/init.d/dropbox start

wget -O dropbox.py http://www.dropbox.com/download?dl=packages/dropbox.py

chmod a+rx dropbox.py

sudo mv dropbox.py /usr/local/bin/

Des remarques, questions ? Les commentaires sont là pour ça !

Sources utilisées pour la rédaction de ce billet:

  • Ferllings

    Est-il possible de partager, avec un autre utilisateur, en utilisant une ligne de commande?

  • @Frellings: tu entends quoi par partager avec d’autre utilisateur ?

    Un petit exemple …

  • Telsa

    Bonjour !
    Si j’ai bien compris, le sript disponible à l’adresse:
    http://www.dropbox.com/download?dl=packages/dropbox.py
    permet la mise à jour quotidienne ?
    J’ai une autre question hors sujet: est-il possible d’avoir une copie d’écran de votre bureau ainsi que le nom de votre thème ? La copie d’écran de votre fenêtre a l’air très agréable !
    Merci beaucoup !

  • @Telsa: Le script permet seulement de voir ce que le daemon est en train de faire. On ne peut pas parler de synchronisation quotidienne car tout fichier copier dans le répertoire Dropbox du serveur sera automatiquement transféré vers le serveur Dropbox et ensuite sur les autres clients Dropbox.

    Pour avoir des infos sur mon thème, je te conseille la lecture de ce billet:

    http://blog.nicolargo.com/2010/10/mon-desktop-201010.html

  • Pingback: hello world « Sensperiodit’s Blog()

  • Pingback: « Destination le cloud » avec Dropbox et Bittorent « Romain's blog()

  • Bob

    J’ai bien configuré le service dropbox au démarrage de mon laptop.

    sudo update-rc.d dropbox defaults

    Seulement je n’ai pas l’icone dropbox dans la barre au dessus à droite… Il faut que je relance le service pour que l’icone apparaisse… Une idée ?

  • Dam

    Bonjour à vous, merci pour ce tutoriel, j’ai juste un problème et je ne vois pas d’où ça peut venir : le dossier /dropbox est créé, les dossier à l’intérieur aussi mais en revanche les fichiers ne sont pas dedans…

    en espérant que quelqu’un ait une idée je vous remercie!
    Bye

  • Pour info, j’ai ajouter un script de démarrage maison pour le serveur Dropboxd qui fonctionne sous Debian/Ubuntu:

    https://github.com/nicolargo/debianpostinstall/blob/master/dropbox

  • Soryuk

    Bonjour, il y a un lien mort dans le tuto.

    est-il possible d’obtenir le script normalement disponible sur cette page ?

    http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall/UbuntuStartup

    Merci beaucoup

  • Salut, j’ai ce message arrivé à cette étape :

    root@serveur:/etc/init.d# update-rc.d dropbox defaults
    update-rc.d: using dependency based boot sequencing
    update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match dropb ox Default-Stop values (none)
    insserv: warning: current stop runlevel(s) (0 1 6) of script `dropbox’ overrides LSB defaults (empty).

    je ne comprend pas ce message !

    Merci pour votre aide 🙂

  • Re ^^

    Grosomodo sa fait des semaines que j’essaye de faire fontionner dropbox sur ma debian 7.4 32 bits mais j’ai toujours ce même problème et le support n’en savent rien. je suis chez Free et je n’ai pas de proxy, ni de parfeu [d’ailleur ils me gavent avec ça].

    Le problème est simple il suffit de lire ci-dessous :

    guyhom@serveur:~$ ~/bin/dropbox.py start
    Starting Dropbox…Done!
    guyhom@serveur:~$ ~/bin/dropbox.py status
    Téléchargement de la liste de fichiers…
    Indexation…
    Synchronisation (48 927 fichiers restants)
    Transfert de 89 fichiers…
    guyhom@serveur:~$ ~/bin/dropbox.py status
    Dropbox isn’t running!

    dropbox se coup, au bout de 4h ou 1h ou encore 10 minutes.

    Si une âme charitable passe par ici merci de revenir vers moi afin de m’aider à comprendre ce qui cloche sur ce type de problème car j’en ai marre !!!!

    Perso je me fiche de dropbox, si j’ai pas de solution je suis près a changer de prestataire de service. du moment que sa fonctionne sous debian.

    cordialement,

    Guillaume