Profiter de sa Dropbox sur son serveur GNU/Linux
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: