Dropbox-like auto-hébergé avec DVCS-autosync

DVCS-autosync1 est un dropbox-like, basiquement, il s'agit de synchroniser un dossier entre plusieurs machines par internet, et plus précisément :

  • Synchronisation en (quasi) temps réel;
  • Transparence pour l'utilisateur (la synchronisation se fait en arrière-plan, sans intervention de l'utilisateur) ;
  • Fonctionnement hors-ligne (la synchronisation est faite lorsque le réseau redevient disponible) ;
  • Conservation d'un historique des modifications pour revenir en arrière au besoin.

DVCS-autosync fonctionne également sous OSX et Windows (je n'ai pas testé).

Ce Billet couvre l'installation de DVCS-autosync sur un système debian-like (mais peut s'adapter simplement à d'autres distributions).

Fonctionnement

DVCS-autosync utilise :

  • git pour stocker les fichiers, publier et récupérer les modifications2;
  • jabber pour échanger des messages de mise à jour.

Lorsque DVCS-autosync est lancé sur une machine cliente, il surveille les changements sur un répertoire. Lorsque par exemple un fichier est modifié :

  1. Il ajoute cette modification à git ;
  2. Il pousse les modifications vers le dépôt central sur un serveur distant (immédiatement, ou plus tard lorsque le réseau revient) ;
  3. Il signale aux autres machines synchronisées via jabber qu'il y a du neuf ;
  4. Les autres machines récupèrent immédiatement les modifications.

On a donc 3 types d'acteurs :

  1. Le dépôt git central qui est la référence pour tous les clients ;
  2. Le serveur jabber (qui peut-être ou pas la même machine que le précédent), muni d'un compte utilisateur pour autosync ;
  3. Les clients, ce sont les machines sur lesquelles on veut utiliser les dossiers synchronisés. Ils s'échangent les fichiers via le dépôt git et des notifications via le serveur jabber.

Installation

Dans cet exemple

  • Le serveur git s'appelle gitserv.example.net et est accessible par l'utilisateur toto en SSH
  • Le compte jabber est autosync@jabber.example.net
  • Les deux machines clientes s'apellent… laptop et desktop

1. Serveur git

Le serveur qui contient le dépôt central, il doit-être accessible en SSH3 depuis tous vos clients. git (apt-get install git) doit-être installé.

Création du dépôt

Nous allons d'abord créer un dépôt vide sur le serveur dans /home/toto/autosync.git

toto@gitserv $ cd /home/toto/
toto@gitserv $ git init --bare autosync.git

2. Serveur jabber

Il faut créer un compte Jabber qui sera utilisé par autosync5. Deux choix s'offrent à vous :

  • Créer un compte sur votre propre serveur Jabber (éventuellement sur la même machine que le serveur git);
  • Créer un compte sur un serveur jabber public (ex: jabber.fr).

Il convient en tout cas de créer un compte utilisateur dédié à autosync si vous ne voulez pas être ennuyé sur votre compte personnel par les notifications à chaque mise à jour d'un fichier…

3. Les clients

La procédure ci-dessous est à renouveller pour chaque client.

Doivent-être installés sur chaque client :

  • git ;
  • dvcs-autosync (voir ci-dessous) ;
  • python-notify si vous voulez avoir des notifications de bureau à chaque mise à jour de votre dépôt.

Installation du paquet dvcs-autosync

Des paquets dvcs-autosync sont disponibles dans debian, ubuntu et archlinux.

Sur Debian/ubuntu, les paquets officiels ne sont pas tout à fait à jour et plutôt bogués; aussi, je vous conseille plutôt d'installer ce paquet construit depuis le git ou de construire vous-même un paquet depuis le dépôt du logiciel.

Initialisation du dépôt

Il faut ensuite lier le dépôt distant de gitserv au dépôt local de laptop :

toto@laptop $ cd /home/toto
toto@laptop $ git clone ssh://~toto/autosync.git

/home/toto/autosync sera notre dossier synchronisé.

Configuration de DVCS-autosync

toto@laptop $ zcat /usr/share/doc/dvcs-autosync/examples/.autosync-example.gz > ~/.autosync
toto@laptop $ nano ~/.autosync

Les options importantes à modifier sont :

Le chemin local (sur laptop) du dossier synchronisé :

[autosync]
path = /home/toto/autosync

Les identifiants jabber :

[xmpp]
username = autosync@jabber.example.net
password = votre-mot-de-passe

Utilisation

Il n'y a rien à faire tourner en particulier sur le serveur, il faut simplement lancer sur chaque client :

$ dvcs-autosync

Puis placer/supprimer/modifier des fichiers comme si de rien n'était dans le dossier autosync qui est maintenant synchronisé à quelques secondes prêt entre vos différents clients !

Démarrage automatique

Pour démarrer autosync à l'ouverture de votre session : 

$  cp /usr/share/applications/dvcs-autosync.desktop .config/autostart/

Voir aussi


  1. Sexy comme petit nom n'est-ce pas ? 

  2. mais Mercurial peut aussi être utilisé (non testé) 

  3. …ou via n'importe quel moyen d'accès à git mais cela dépasse le cadre de cet article qui se borne à présenter une manière unique et simple… 

  4. le paquet est construit pour Debian squeeze mais devrait fonctionner avec les autres debian/ubuntu/… (testé sous Lucid). 

  5. Il vaut mieux utiliser un compte dédié à autosync sans quoi vous serez noyés de messages sur votre compte de messagerie instantanée