Un clone Dropbox avec des logiciels libres 3/4

Portable windows XP

On installe Cygwin puis on choisit dans l’interface les paquets supplémentaires suivants : Openssh, Make, Ocaml, Python. Petit guide illustré (bien noter la modification du « Path » windows).

Installation d’Unison

Lancez le terminal Cygwin et allez dans un répertoire qui vous plaît ou créez en un.

#Ici on crée le répertoire unison-code
mkdir unison-code
#On rentre dedans
cd unison-code

Compilation comme sur Ubuntu :

#Comme sur Ubuntu on récupère les sources
svn checkout https://webdav.seas.upenn.edu/svn/unison
cd trunk
#on compile en mode "texte"
make UISTYLE=text
# on récupère nos fichiers pour les mettre au bon endroit
sudo cp src/unison /usr/local/bin/
sudo cp src/fsmonitor.py /usr/local/bin/

Installation du serveur OpenSSH

Ensuite il faut configurer le serveur SSH que vous avez installé sur le portable XP au début (le paquet Openssh). Lancez le terminal Cygwin puis lancez la commande :.

ssh-host-config -y

Le « -y » répond oui à toutes les questions par défaut, ce qui nous convient. Quand on vous demande ensuite « CYGWIN= » pour demande l’émulateur de terminal à utiliser, tapez ce qui suit :

Mintty ntsec

Ensuite il faut lancer le service (qui démarrera tout seul les fois suivantes)

cygrunsrv -S sshd

Bien penser à ouvrir le port 22 dans le parefeu Windows pour votre PC fixe uniquement (on n’est jamais trop prudent).

A faire sur le PC fixe sous Ubuntu :

Enfin il convient d’installer aussi un serveur Openssh pour pouvoir recevoir des connexions ssh (chiffrées donc).

sudo apt-get install openssh-server

On fait la même chose sur le parefeu pour ne permettre la connexion que de l’ordinateur portable sur votre réseau local. J’utilise GUFW (pour Graphical uncomplicated firewall) mais chacun ses goûts.

Vous devriez maintenant pouvoir vous connecter du portable ou du PC fixe. Exemple du PC portable :

ssh login_ubuntu@192.168.xx.xx

Il doit vous demander le mot de passe et ensuite vous laisser entrer. Idem en sens inverse du fixe vers le portable (Attention les logins Windows sont sensibles à la casse !).

Une fois que ça marche il faut sécuriser tout ça (et ne plus permettre de se connecter avec mot de passe). Voici donc un tutoriel très bien fait pour sécuriser un peu et ajouter les clefs SSH qui permettent de se connecter d’un PC à l’autre sans mot de passe. Lisez tout avant de faire vos modifications !

Et maintenant on teste le tout ! Mettez des fichiers dans le répertoire Image sur le PC et le fixe. Du Pc fixe tapez :

unison masynchro

« masynchro » est le nom du profil que nous avons défini dans l’étape précédente. Unison devrait vous proposer des actions à faire, tapez « f » (pour « follow ») pour suivre ses recommandations et appliquer les changements. Et voilà, vous devriez avoir deux répertoires identiques de part et d’autre.

On va enfin faire un script pour lancer tout ça en automatique sur le PC sous Ubuntu et surveiller le répertoire à chaque changement :

#!/bin/bash
#set -e  force exit code
#on redirige les erreurs et le smessages standard vers un fichier log.
exec 1>>/home/votrelogin/scripts/sync/sync.log 2>&1
#on met la date dna sle fichier log
echo "`date +%F" "%T` début script synchro";
# début d'une boucle : on pingue toutes les 60 secondes jusqu'à ce que ça marche.
while :; do
  if ping -c 1 192.168.0.12 > /dev/null;  then
    #si ça pingue, on lance le programme de suivi de log avec les règles contenues dans swatchrc_unison
    swatch --daemon -c /home/votrelogin/scripts/sync/swatchrc_unison -t /home/votrelogin/scripts/sync/sync.log;
    # un petit pop up sur le bureau + ligne dans les logs
      notify-send "Portable en ligne";
    echo "`date +%F" "%T` portable en ligne, début synchro initiale";
    #on lance l'unison qu'on a compilé avec l'argument -batch pour éviter
    #toutes questions qui interromprait le processus
 /usr/local/bin/unison -batch masynchro;
 notify-send "syncro active";
 echo "`date +%F" "%T` synchro initiale ok, début surveillance";
#ensuite on surveille le répertoire pour répercuter tout changements suivants en temps réel.
/usr/local/bin/unison -batch -repeat watch masynchro;
 break
 fi
sleep 60s
done
exit

Je couvrirai swatch (surveillance de log) et notify-send dans le prochain billet. Ne pas oublier de passer ce script comme étant executable (clic droit puis propriétés sur le fichier). Le plus simple est est lancer ce script à la connexion de votre session via le module standard « applications au démarrage ».

Idéalement il faut faire la même chose sur le PC Windows. Le logiciel gratuit qui s’approche le plus de cette fonctionnalité est « Directory monitor« , sans être parfait il permet d’avancer. Pour chaque changement il faut lancer la commande :

ssh login_ubuntu@192.168.xx.xx 'touch /home/votrelogin/Images'

La commande « touch » met à jour la date et l’heure du répertoire visé sur le poste Ubuntu, Unisson va détecter le changement, lancer la synchronisation et récupérer du coup les nouveaux fichiers du Portable Windows sans risque de conflit.

Il ne reste plus qu’à mettre en place un moyen de suivre simplement ce qui se passe, c’est ce qu’on verra dans le prochain billet !

Un clone Dropbox avec des logiciels libres 2/4

Configuration sur le PC fixe Ubuntu

Pensez à désinstaller la version d’unison disponible dans votre gestionnaire de paquet pour éviter les conflits. Créez ensuite un répertoire où stocker les sources d’Unison et entrez dedans en ligne de commande. ensuite tapez les commande suivantes :

sudo apt-get install ocaml python-pyinotify svn
## Les paquets nécessaires à la compilation
svn checkout https://webdav.seas.upenn.edu/svn/unison
## Cela télécharge les sources dans le répertoire courant. On pourra les supprimer après.
cd trunk
make NATIVE=true UISTYLE=text
## `make install` installe dans $HOME/bin/ on va donc déplacer les deux bouts qui nous intéressent
sudo cp src/unison /usr/local/bin/
sudo cp src/fsmonitor.py /usr/local/bin/

J’ai eu des message d’erreurs lors de « make » mais le binaire Unison était bien disponible dans /trunk/src/ au final. Pour vérifier que la version d’union installée est la bonne faite :

unison -help

Unison s’appuit sur des fichiers de configuration dont on va se servir. allez dans ~/.unison editer le fichier « defaults.prefs » qui servira de base à toutes vos autres configuration et collez-y le texte suivant :

log=true
logfile=/home/votrelogin/.unison/unison.log
times=true

ces commandes indiquent où sauver le journal d’exécution et de garder les même dates entre un fichier et sa réplique.

Puis dupliquer le fichier « defaults.prefs » et renommer le en « masynchro.prefs » avec les valeurs suivantes :

include defaults
root=/home/votrelogin/Images
root=ssh:login_windows@IP_du_portable//cygwin/D/Images

ainsi on importe les paramètres par défaut en rajoutant les deux « root » qui sont les deux répertoires à garder synchronisé. Notez le format du deuxième chemin qui est spécifique à Cygwin qui sera situé sur la machine Windows que nous allons traiter de ce pas !