Bonjour à tous,
Je suis en train de rédiger mon rapport de stage (fin de DUT, on ne se moque pas de la jeunesse ) et j’ai cherché à mettre en place un environnement ergonomique (pour avoir envie de me jeter dans la rédaction) et sécurisé du point de vue de la sauvegarde de fichiers (pour ne pas avoir à tout réécrire bien sûr).
À titre indicatif j’utilise Debian Testing (Wheezy lors de l’écriture de ce post)
[size=130]La solution mise en place[/size]
[size=115]Une solution libre…[/size]
Je ne fais pas confiance aux Dropbox et autres SkyDrive et j’ai donc voulu mettre en place une solution indépendante de ces logiciels (et libre, mais libre comme l’air, pas comme la bière ). Ainsi, pour ce qui est de la gestion de l’espace de stockage je m’appuie sur WebDAV (et son pendant pour le monter en userspace: davfs2).
[size=115]… mais pas (forcément) gratuite[/size]
Je bénéficie de cet espace de stockage chez un hébergeur Roubaisien bien connu, moyennant bien sûr quelque paiement (rien d’indécent dans les tarifications cependant).
[size=115]Des outils simples et efficaces[/size]
Pour rédiger mon rapport je me suis tourné spontanément vers LaTeX. Puisqu’il s’agit de fichiers texte (pour les sources .tex du moins) j’ai eu l’idée de synchroniser ma sauvegarde avec… Mercurial, n’en déplaise aux aficionados de rsync (et pourtant je viens du monde des Gentooïstes !)
[size=115]Le principe[/size]
Le principe est relativement simple: il s’agit de monter l’espace de stockage dans l’espace utilisateur à l’aide de davfs, et de synchroniser un répertoire local (~/Documents chez moi) et le répertoire distant via son montage et à l’aide de Mercurial.
[size=130]En pratique[/size]
[size=115]Davfs[/size]
Pour ce qui est de la mise en place du montage de l’espace de stockage à l’aide de davfs je dois avouer m’être grandement inspiré de la documentation Ubuntu (malgré mon aversion pour la distribution, pas taper )
Ainsi, j’ai installé le paquet davfs2 disponible dans les dépôts Debian et l’ai “dpkg-reconfiguré”
$ aptitude install davfs2
$ dpkg-reconfigure davfs2
J’ai ensuite créé l’emplacement destiné au montage et ai modifié mon /etc/fstab en conséquence
[code]$ mkdir ~/TBox
echo “https://serveur.qui.heberge.net /home/thibault/TBox davfs rw,user,noauto 0 0” >> /etc/fstab
adduser thibault davfs2[/code]
J’ai utilisé également la méthode (pas très sécurisée) décrite dans la documentation ubuntu pour pouvoir monter l’espace de stockage sans devoir rentrer identifiant et mot de passe à chaque tentative de montage (et permettre à Nautilus de le monter comme un grand).
Ainsi j’ai créé mon propre répertoire ~/.davfs2 et l’ai rempli comme il se doit
[code]$ mkdir ~/.davfs2
$ cp /etc/davfs2/davfs2.conf ~/.davfs2
cp /etc/davfs2/secrets ~/.davfs2
chown thibault:thibault ~/.davfs2/secrets[/code]
Avant de le remplir j’ai vérifié que j’étais bien le seul à pouvoir le lire:
$ ls -l ~/.davfs2/secrets
-rw------- 1 thibault thibault 2692 mai 27 12:04 /home/thibault/.davfs2/secrets
Ensuite un petit coup de vim dans le fichier secrets pour le remplir (histoire d’éviter qu’un echo “/home/thibault/TBox identifiant motDePasse” >> ~/.davfs2/secrets ne se retrouve dans mon .bash_history ) selon la syntaxe suivante:
Ça y est, on a déjà notre espace WebDAV accessible simplement ! On note que le contenu n’est pas crypté et qu’un employé peu scrupuleux pourrait avoir accès au contenu. Si vous n’avez pas de fichier sensible tout peut être laissé en l’état, sinon la solution détaillée dans la documentation ubuntu me paraît satisfaisante.
[size=115]Mercurial[/size]
Le comportement attendu est de garder un répertoire local (~/Documents) synchronisé avec le répertoire distant.
[size=110]La solution inefficace[/size]
Il pourrait être tentant d’exécuter les commandes suivantes après montage de l’espace WebDAV afin de respecter la synchronisation du répertoire local envers le répertoire distant (ie pouvoir faire un cd ~/Documents && touch a && hg commit && hg push au lieu de touch ~/Documents/a && cd ~/TBox/Documents && hg pull)
$ cp ~/Documents ~/TBox/
$ hg init ~/TBox/Documents && hg add && hg commit
$ mv ~/Documents ~/Documents.bak
$ cd ~ && hg pull ~/TBox/Documents
Si il est louable de respecter la prépondérance du serveur vis à vis du client, cette solution est brouillon et très consommatrice en bande passante (l’espace WebDAV est certes monté localement, mais il communique avec le serveur derrière) puisqu’il y a des allers retours incessants entre le client et le serveur.
[size=110]La solution kivamieux[/size]
Voyons comment contourner le problème, c’est à dire garder l’autorité du serveur (c’est le client qui push et pas le serveur qui pull) sans consommer autant de bande passante qu’il faudrait pour télécharger les intégrales du seigneur des anneaux et de star wars en version longue et dans toutes les langues.
Pour faire les choses proprement, commençons par créer le répertoire Mercurial localement, sans rien envoyer au serveur:
$ hg init ~/Documents
$ hg add
$ hg commit
Ensuite, “exportons” notre répertoire vers le serveur (ceci peut prendre du temps au vu de la quantité de données qui peut transiter. À ce sujet, il est certainement intéressant pour vous de mettre en place un .hgignore qui ne synchronisera pas certains documents lourds et peu importants)
Nous avons donc maintenant nos deux répertoires synchronisés ! Cependant, nous avons un comportement assez peu élégant puisque pour effectuer une synchronisation il faut que ce soit le serveur qui pull les changements.
Cela se résoud de manière très simple ! En effet il suffit de déplacer le fichier ~/TBox/Documents/.hg/hgrc vers ~/Documents/.hg/hgrc et le comportement s’inversera
[size=130]Conclusion[/size]
J’aimerais beaucoup avoir vos retours sur cette méthode et des moyens de l’améliorer ! Je rappelle qu’elle s’applique dans mon cas à des fichiers texte (ou des pdf immuables).