Gonzague

Tak suka wanita gemuk ! le blog de Gonzague.

Archive pour décembre 2011

unibox

Cet article fait suite au précédent article expliquant comment créer un équivalent Dropbox avec Unison. Ayant un peu avancé sur l’application, l’article va se focaliser dessus.

L’application est vraiment très simple, on choisi son profil unison et c’est parti. J’ai voulu ajouter un peu plus de flexibilité, jusqu’à maintenant j’utilisais la location par defaut d’Unison, ce qui peut poser problèmes dans certains cas. J’ai donc fait une petite fenêtre se lançant via le menu de l’icône du systray qui permet de préciser où est l’exécutable. Unison nécessitant d’avoir la même version entre les deux sources, j’affiche également la version de l’éxecutable.

unibox

unibox

Si jamais il y a un problème le bouton “Detailed log” permet d’en savoir un peu plus.

Histoire de pousser le vice un peu plus loin pour par exemple les utilisateurs qui synchronisent sur des serveurs différents ayant des versions différentes d’Unison, je permet également de préciser un exécutable particulier pour chacun des profils synchronisés, J’utilise la même fenêtre avec un titre different mais cette fois-ci se lance avec un clic droit sur le profil.

unibox

unibox

Le principe reste le même.

Dans la section petit détail, j’affiche une icône dans le systray différent si une synchronisation est en court. L’icône bleue pour Windows / Linux, la noire pour Mac OS X

unibox unibox unibox unibox

Pour finir, je ne compte pas trop développer cette application, car ça ne va vraiment pas toucher énormément de monde, il me reste à faire un mini site et une fonction pour détecter les mises à jours ensuite, je me contenterais de corrections de bugs seulement.  Je posterais un nouvel article pour le téléchargement quand ça sera prêt.

Cet article fait suite à précédent article que j’avais écrit sur le sujet.

Ma précédente tentative en utilisant unison n’était pas super convaincante car je m’y prenais mal, ça me scanait mes 50Go de données à chaque synchronisation et c’était “un peu” lent… ok très long.

Après de longues tentatives avec des trucs genre GoodSync, Git, SVN et j’en passe, je suis tombé sur plusieurs articles (ici et ici) qui expliquent comment bien faire les choses avec unison. Et ça marche ! Mais… comme il y a toujours un mais ces articles précisent d’utiliser un script en python qui guette si il y a un changement dans le dossier, mais il y a deux problèmes.

  • La detection des changements au sein du dossier à synchroniser est un peu hasardeuse (sur mes macs tout du moins)
  • De cette manière on ne peux pas lancer une synchro à intervalles réguliers, et unison ne conseille pas de lancer deux synchros simultanées sur le même ordi avec le même profile.

Donc on a au choix, soit au changement dans les fichiers uniquement, soit à intervalles réguliers. Le premier choix est éliminé car si on a plusieurs ordinateurs actifs qui se synchronisent avec le dossier on est niqué car si un des ordis fait un changement, il sera bien envoyé au serveur mais le deuxième ne le recevra que quand il y aura un changement dans ses fichiers du même dossier. Le deuxième choix est donc préférable, mais si on veut qu’un fichier se propage rapidement on est niqué aussi.

Donc j’ai re-developé mon application “UniBox” qui permet de gérer les deux (écoute du dossier et synchro régulière) à la fois. Pour l’instant elle ne fonctionne que sous OS X et sans doute sur linux. Sur windows, je ne sais pas, j’ai pas testé mais je doute que ça marche. On a donc une petite icône dans la barre de menu en bonus donc pas d’encombrement de l’écran car tout peut se faire en fond. L’appli est maintenant une sorte de wrapper autout d’unison, c’est à dire que j’utilise également les fichiers de profile d’unison. L’appli proposant un petit assistant pour les gérer (créer, modifier, supprimer).


unibox

unibox

L’interface permet également, contrairement à la première version, de synchroniser plusieurs dossiers, de voir ce qui se passe lors de la synchronisation et propose un bouton qui permet d’ouvrir le dossier dans l’explorateur de fichier.

On à donc un joli dropbox sans limite de stockage qui fonctionne plutôt bien.

Mais ce serait vraiment trop facile de s’arrêter en si bon chemin…

Histoire de pousser le vice un peu plus loin, je me suis demandé comment faire si par exemple je débarque chez un pote et que j’ai besoin d’un des fichiers de mon “unibox” mais que mon pote n’a pas unison et qu’il n’a de toutes façon pas spécialement envie de synchroniser 50Go pour un seul fichier/dossier ?

Et bah c’est très simple. Sachant que unison garde une copie intacte du dossier (non compressée) sur le serveur, on va donc installer un explorateur de fichiers web. J’ai personnellement opté pour AjaXplorer. Mais pour faire les choses bien, il faut penser à quelques trucs.

  • Le dossier doit être disponible en lecture et écriture sur le serveur par l’utilisateur/groupe utilisé par apache sinon, on ne peux pas uploader via l’interface web
  • Du coup, unison doit être lancé en se connectant en ssh via ce même utilisateur/groupe utilisé par apache sinon les fichiers uploadés via unison ne seront pas modifiable, effaçable  via l’interface web.

Bon, alors pourquoi est-ce que j’ai choisi AjaXplorer ? Tout simplement parce que c’est le premier sur lequel je suis tombé et qu’il offre des possibilités sympa. On peut par exemple télécharger un dossier entier d’un coup, mais là où ça défonce, c’est qu’il est possible de partager les fichiers (ça demande un peu plus de configuration cependant) via un lien public protégé où non par un mot de passe, et pour une durée déterminée ou non.

Il est également possible de partager un dossier entier, pour cela ajaxplorer va nous demander de créer un utilisateur qui n’aura accès qu’au dossier qu’on souhaite partager et donner à cet utilisateur des droits de lecture  et d’écriture ou non. Donc tout ce qui se passe sur la version Web sera propagé dans les dossiers respectifs des ordis synchronisés sur ce dossier.

unibox

AjaXplorer possède également une application iOs qui permet de parcourir ses fichiers sur le serveur et d’uploader des photos de son iPhone/iPad/iPod.

On a donc une solution vraiment complète en main qui couvre tout ce que fait Dropbox (excepté le versionning). Ça demande un peu de temps et de connaissances pour tout mettre en place mais au final, ça permet d’économiser $200 par an (pour les gros consommateurs) et d’avoir vraiment le contrôle sur ses propres fichiers.

P.S: Les près-requis de mon précédent article sont toujours valables.