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: