Catégories
Open-source Planet-libre Systeme

Dropbox et la ligne de commande

Je suis utilisateur du service Dropbox depuis maintenant quelques temps. Il me permet de synchroniser les fichiers entres mes différentes machines (même les serveurs). Depuis ses débuts, Dropbox propose un client pour système GNU/Linux complètement intégré dans l’environnement graphique.

Ce qui est moins connu, c’est l’utilisation de la bonne vieille ligne de commande pour profiter de ce service. C’est ce que nous allons voir ensemble dans ce billet en parcourant quelques fonctions disponibles.

Ré-initialiser du cache

Dans certains cas, il se peut que votre client Dropbox tourne dans le vide (l’icône de notification reste bloqué sur une mise à jour de fichier). Je suis bien placé pour le savoir car cela vient de m’arriver…

Pour repartir d’une configuration propre, il est nécessaire de nettoyer le cache de Dropbox. Il n’y a pas de commande à proprement parler pour faire cela mais un simple:

rm -R ~/Dropbox/.dropbox.cache/*

devrait suffire à remettre votre Dropbox dans le droit chemin de la synchronisation.

Arrêter puis relancer Dropbox en ligne de commande

Si vous avez à écrire un script shell qui va générer des fichiers non désirables (ou bien trop volumineux) dans un des répertoire de votre Dropbox, il peut être utile d’arrêter puis de relancer le service depuis le script. On évitera ainsi de saturer sa ligne internet avec des transferts inutiles.

Pour cela on utilisera les commandes:

dropbox stop
...
<votre script ici>
...
dropbox start

Obtenir des informations sur l’état de Dropbox

Pour obtenir le status du démon Dropbox (processus dropboxd), il est possible d’utiliser:

$ dropbox  status
Idle

Note: la commande ‘dropbox running’ renvoie le code retour 1 si le démon Dropbox est lancé, 0 sinon. 

Si vous souhaitez avoir l’état de synchronisation de votre répertoire ~/Dropbox:

$ dropbox filestatus ~/Dropbox/
/home/nicolargo/Dropbox/: up to date

Il est possible de passer en paramètre de cette dernière fonction un fichier (ou un répertoire):

$ dropbox filestatus ~/Dropbox/Public/ESIL2010-Cloud.pdf 
/home/nicolargo/Dropbox/Public/ESIL2010-Cloud.pdf: up to date

Obtenir l’URL publique des fichiers de votre Dropbox

Last but not least, Dropbox permet de partager vos fichiers en générant une URL publique. Celle-ci peut être obtenue en ligne de commande (ou dans vos scripts) via:

$ dropbox puburl ~/Dropbox/Public/ESIL2010-Cloud.pdf 
https://dl.dropboxusercontent.com/u/1112933/ESIL2010-Cloud.pdf

Pour aller plus loin: l’API Python

Si (comme moi), vous développez en Python, il existe une API permettant de jouer avec le service Dropbox. Je vous conseille la lecture de la page officielle sur le sujet.

Catégories
Open-source Planet-libre Reseau Systeme Web

SparkleShare, enfin une vraie alternative libre à Dropbox ?

C’est en lisant un billet sur le blog de mister Korben que j’ai découvert SparkleShare, une solution libre se positionnant comme un concurrent direct de Dropbox.  Depuis quelques temps, on ne peut as dire que Dropbox soit en odeur de sainteté dans la sphère des libristes. Le changement plutôt maladroit de leur TOS et leur engagement timide dans les logiciels open-source n’y sont pas étranger.

Nous allons donc nous intéresser dans ce billet sur la solution SparkleShare qui se base sur des logiciels libres (GPL v3) et qui permet de gérer soit même son serveur ou seront stockées les données.

Les limites actuelles de SparkleShare

SparkleShare est actuellement en développement. La version 1.0 devrait sortir dans les prochains mois. A la date de rédaction de ce billet, les limites sont les suivantes:

  • Clients disponibles sous GNU/Linux et Mac OS X (les clients Windows, Android er IOS sont prévus)
  • Pas d’interface Web pour accéder à vos fichiers depuis un simple navigateur (il faut passer par un client SparkleShare)
  • Pas de synchronisation LAN to LAN. Si vous avez deux PC sur le même réseau local, la synchronisation passera automatiquement par le serveur (donc par Internet)
  • Pas de chiffrement (en natif) des données sur le serveur
  • Client développé en Mono (burk…), vivement les forks…

Les avantages de SparkleShare // Dropbox and Co

On passe ensuite aux avantages:

  • Les clients SparkleShare sont sous licence GPL version 3
  • Les serveurs SparkleShare peuvent se baser sur des logiciels libres (GIT et serveur SSH)
  • Possibilité d’installer son propre serveur sur une machine dédiée ou d’utiliser un serveur GIT public (GitHub, Gitorious…)
  • Chiffrement du lien client vers serveur (utilisation d’un tunnel SSH)

Installation du serveur SparkleShare

Comme nous venons de le voir, dans le monde SparkleShare, un serveur est en fait une machine accessible depuis Internet (ou tout autre réseau) à partir d’une connexion SSH et proposant un serveur GIT.

Attention: si vous ne disposez pas d’un serveur dédié, il est également possible d’utiliser un hébergement gratuit chez GitHub. Dans ce cas,  il faut garder à l’esprit que vos fichiers seront publics (il est donc nécessaire de les chiffrer):

Nous allons donc installer ces briques sur un serveur dédié sous Debian 6.0 Squeeze.

On commence par installer les serveurs SSH et GIT (en root):

apt-get install git-core openssh-server

Puis on génère le dépôt GIT pour SparkleShare (avec votre utilisateur standard):

cd ~

git init –bare sparkleshare.git

Cette dernière commande va créer un sous répertoire nommé sparkleshare.git dans le répertoire $HOME de votre utilisateur (/home/USER/sparkleshare.git). Il est bien sûr possible de remplacer sparkleshare.git par un chemin absolu.Il est alors important que le répertoire soit en lecture/écriture pour l’utilisateur SSH que vous allez utiliser pour vous connecter.

Et voilà, c’est fini 🙂 Dingue non. Si vous utilisé un Firewall sur votre machine, il faut juste vérifier que le port TCP/22 (SSH) est bien ouvert.

Installation du client SparkleShare

Il n’existe pas à l’heure actuelle de dépot officiel pour Debian / Ubuntu (alors qu’il en existe un sous Fedora et Mac OS X). Il va donc falloir installer le client à la mimine. Rien de bien compliqué, il suffit de saisir les commandes suivantes dans un terminal de votre PC sur lequel vous voulez installer le client. J’ai validé cette procédure d’installation sur une distribution Debian 6.0 Squeeze.

On commence par installer les pré-requis (en root):

apt-get install openssh-client git-core gtk-sharp2 mono-runtime mono-devel monodevelop libndesk-dbus1.0-cil-dev nant libnotify-cil-dev libgtk2.0-cil-dev libwebkit-cil-dev intltool libtool python-nautilus libndesk-dbus-glib1.0-cil-dev

Remarque: la version actuelle du client GNU/Linux est devéloppé en langage Mono (#wtf), les pré-requis précédant vont donc installer un tas de librairies (environ 120 Mo sur mon PC de test)…

On récupère les sources de la dernière version du client SparkleShare:

mkdir -p ~/src

cd ~/src

git clone https://github.com/hbons/SparkleShare.git

Puis on compile/installe:

cd ~/src/SparkleShare

./autogen.sh

make

su -c « make install »

Configuration du client

Avant de commencer à utiliser votre client SparkleShare, il faut lui dire quel serveur utiliser et surtout comment établir une connexion sécurisée avec lui.

Si vous avez déjà une clés SSH publique (donc un fichier ~/.ssh/id_rsa.pub), il n’est pas nécessaire de faire l’étape suivante:

ssh-keygen

On télécharge ensuite notre clés cliente sur notre serveur (SERVER) en utilisant le compte utilisateur (USER) avec lequel vous avez installé le dépôt GIT:

ssh-copy-id USER@SERVER

Pour tester que l’étape précédente a bien fonctionné, il suffit de se connecter en SSH (ssh USER@SERVER) et de voir si la connexion se fait bien sans demande  de login/password.

On lance ensuite le client SparkleShare:

sparkleshare start

La fenêtre suivante devrait s’afficher:

On entre les informations, puis on passe à la configuration du serveur en entrant le le couple USER@SERVER ainsi que le répértoire absolu du dépôt GIT du serveur (/home/USER/sparkleshare.git/):

Enfin, on finalise la configuration:

Pour vérifier que le client est bien lancé, il suffit de regarder sa barre de tache:

Vérifier que cela marche bien

Il suffit de mettre sur votre PC client, un nouveau fichier dans le répertoire « sparkleshare » puis de vérifier que ce dernier est bien pris en compte sur votre serveur GIT:

cd ~/sparkleshare.git

git log

Author: nicolargo <pasde@spam.com>

Date: Wed Jul 6 14:12:17 2011 +0200

+ ‘webcam-192×192.jpeg’

Alors près à laisser tomber Dropbox ?

Catégories
Open-source Planet-libre Reseau Systeme Web

Comment installer (vraiment) Dropbox 1.0 sous GNU/Linux

Dropbox vient de mettre à jour son client vers la version 1.0. Malheureusement, la procédure d’installation qui est donnée sur le site ne marchait pas pour moi (j’ai fait le test sous Ubuntu 10.10 et Fedora 14).

Voici donc un petit hack pour mettre à jour le client depuis une version 0.7.110 vers la 1.0.10:

1) Arrêter votre client Dropbox

2) Lancer les commandes suivantes dans un terminal:

cd ~

wget http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.0.10.tar.gz

mv .dropbox-dist .dropbox-dist.OLD

tar zxvf dropbox-lnx.x86-1.0.10.tar.gz

rm -f dropbox-lnx.x86-1.0.10.tar.gz

Remarque: Si votre PC à une architecture 64 bits, il faut télécharger: dropbox-lnx.x86_64-1.0.10.tar.gz

3) Puis relancer le client Dropbox…

Et voilà le travail ! A vous les joies du Selective Sync !

Catégories
Open-source Planet-libre Systeme

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:

Catégories
Open-source Planet-libre Web

Scripts Nautilus pour partager/départager ses fichiers avec Dropbox

Sur le blog WebUpd8, Andrew propose une méthode pour simplifier le partage de fichier via Dropbox. Je me suis inspiré directement de son billet pour vous proposer deux scripts Nautilus permettant de partager/départager simplement des fichiers se trouvant sur votre disque.

Pour rappel, Dropbox est un service permettant de stocker en ligne et de partager ses fichiers entre différentes machines. De plus il permet de mettre à disposition certains de ces fichiers à n’importe quel utilisateur disposant d’un navigateur Web sur Internet. Pour cela il faut copier le fichier dans le répertoire Dropbox/Public puis saisir une ligne de commande pour obtenir l’URL à fournir aux personnes avec qui vous souhaitez le partager.

Installation des pré-requis

Les deux scripts en question utilisent xclip (pour copier l’URL dans votre clipboard) et zenity (pour afficher un message sur l’écran):

sudo aptitude install xclip zenity

Installation des scripts

J’ai mis les deux scripts (Dropbox Share et Dropbox UnShare) sur mon serveur SVN, pour les installer sur votre système, il suffit de saisir les commandes suivantes dans un terminal:

wget http://svn.nicolargo.com/ubuntupostinstall/trunk/Dropbox%20Share

wget http://svn.nicolargo.com/ubuntupostinstall/trunk/Dropbox%20UnShare

mv Dropbox\ Share Dropbox\ Unshare ~/.gnome2/nautilus-scripts/

chmod a+x ~/.gnome2/nautilus-scripts/Dropbox*

nautilus -q

Que font les scripts ?

Dropbox Share:

  • Création d’un lien symbolique entre le fichier à partager et le répertoire $HOME/Dropbox/Public
  • Lancement du programme dropbox avec l’option puburl pour obtenir l’URL publique du fichier
  • Copie de l’UTL en question dans le clipboard (CTRL-V pour le coller)
  • Affichage d’une fenêtre avec cet URL

Dropbox UnShare:

  • Suppression du lien symbolique entre le fichier à partager et le répertoire $HOME/Dropbox/Public
  • Affichage du fichier départagé

Comment utiliser les scripts ?

Une bonne vidéo valant mieux qu’une série de screenshots…

Dropbox scripts share/unshare from Nicolargo on Vimeo.

Un moyen simple de partager ses fichiers !

Catégories
Reseau Web

Partager ses fichiers entre Linux, Mac, Windows, iPhone et Android

Je vais vous parler d’un service en ligne que beaucoup d’entre vous doivent connaitre et utiliser: Dropbox. Il permet de maintenir synchroniser un répertoire de votre disque dur entre plusieurs ordinateurs et ceci quelques soient leurs systèmes d’exploitations: GNU/Linux, Mac OS X, IPhone/Ipad, Android ou Windows (et bientôt Blackberry).

J’ai réalisé que c’était une des premières applications que j’installais sur mes nouvelles machines (le logiciel est intégré dans mon script de post installation Ubuntu). Après seulement 1 an d’utilisation, Dropbox est devenu avec Gmail et Google Reader un service en ligne dont j’aurai le plus grand mal de me séparer…

Installation de Dropbox

C’est simple, il faut d’abord créer gratuitement un compte qui vous donne droit à un espace de stockage de 2 Go (qu’il est ensuite possible d’augmenter moyenant finance, là est leur business model).  Ensuite lors de l’installation du logiciel Dropbox sur votre ordinateur, ce compte (login et password) vous sera demandé ainsi que le répertoire (que l’on appellera « la dropbox ») de votre disque dur à synchroniser (par défaut~/Dropbox).

Comment marche Dropbox ?

A partir de ce moment, tous les fichiers/répertoires de « la dropbox » seront synchronisés sur un serveur en ligne. On a donc dans un premier temps une simple fonction de sauvegarde de vos données (ce qui n’est déjà pas si mal).C’est en installant le logiciel Dropbox sur une deuxième machine que l’on bénéficie de la puissance de ce service.

En effet, toutes les données seront synchronisées par rapport au serveur. On se retrouve donc avec la même « dropbox » sur les deux machines. Il n’y a pas de limite au nombre de machines que l’on peut synchroniser.

Il est également possible de consulter et d’ajouter des fichier de votre Dropbox en ligne (via un simple navigateur Web).

Les +/- de Dropbox

Les + :

  • Grande simplicité d’installation
  • Utilisation transparente (on y pense plus et on a les données sur toutes ses machines…)
  • Espace de stockage de 2 Go gratuit sur le serveur
  • La fonction « Sync LAN » (active par défaut) permet de faire la synchronisation directement entre vos machines si elles sont connectées au même réseau local.
  • Possibilité de partager un répertoire avec d’autres personnes.

Les :

  • Le logiciel Dropbox n’est pas distribué sous licence « libre »
  • Vos données sont stockées sur un serveur, donc attention aux données sensibles/personnelles (rien ne vous empêche de chiffrer ces données).
  • L’offre payante est un chère à mon goût (environ 100€/an pour 50 Go, 200€/an pour 100 Go)
  • Pas d’assurance que le service de base restera gratuit… mais on a le même problème avec GMail ou Ubuntu One…

Pour vous inscrire et tester Dropbox, suivre ce lien !