Synchroniser vos dossiers locaux/distants

44
4
mai
2012
Technologie

Avec un ami nous cherchions quelques logiciels pour garder certaines de nos informations synchronisées entre notre NAS et nos ordinateurs portables. Nous connaissions rsync, souvent utilisé par la ligne de commande, en vieux rootard que nous sommes. Nous nous demandions ce qui existait pour les utilisateurs moins avertis, ceux qui aspirent à la simplicité d'un clickodrome.

Voici un petit état de ce que nous avons testé, parfois rapidement, en puisant dans le lot des logiciels référencés par Framasoft.

NdM : Merci à Nÿco, Benoît Sibaud, Florent Zara, tuiu pol, JAGUENAUD Anthony, olivierweb, Buns Buns, baud123, Luke SKy, chimrod, Yves Bourguignon, Xavier Claude et yohann pour leur aide lors de la rédaction de cette dépêche

Capivara

Permet de synchroniser 2 dossiers locaux ou local/ssh/ftp.
Quelques bugs avec OpenJDK, mais pas avec le java de SunOracle.
Rapide et simple d'utilisation

Le logiciel a passé aujourd'hui sa phase de développement actif, les dernières mises à jour ne touchent plus aujourd'hui que des corrections minimes. Il a par contre atteint une phase de robustesse et stabilité.

Son principal défaut est de nécessiter la même version sur le client et le serveur. Cela peut empêcher l'échange si les machines ne sont pas mises à jour à la même fréquence.

DVCS-Autosync

Tout comme Sparkleshare dvcs-autosync est basé sur git (mais on peut utiliser n'importe quel dvcs à la place de git).
La synchronisation est en fait un script en python qui vérifie les modifications sur le dossier à synchroniser, et exécute :

  • un commit
  • un push
  • l'envoi d'une notification xmpp aux autres clients

Lorsqu'un client reçoit une notification il effectue un pull.

J'ai apprécié l'élégance du procédé, mais je n'ai jamais réussi à le faire fonctionner correctement (dû à des problème sur mon serveur xmpp je pense).

Fullsync

Le projet est un peu vieux (2005) mais étant en Java, il est logiquement multi-plate-forme.

Owncloud

Owncloud propose un site en PHP qui offre un accès webdav aux données et un client pour synchroniser ces données avec les postes locaux. Il peut aussi stocker des contacts (via Carddav) et des calendriers (via Caldav) séparément et offre une interface web pour consulter le tout. On peut enregistrer plusieurs utilisateurs via le site web et il est possible de partager des fichiers (en lecture ou en lecture/écriture) via les autres utilisateurs de l'instance ou de rendre un fichier public (en lecture uniquement).

L'interface Web permet aussi de consulter directement les PDF, d'écouter les fichiers musicaux (via le greffon Flash) en créant des listes d'écoute et de faire des galeries de photos.

Sparkleshare

Sparkleshare est basé sur Git pour synchroniser les dossiers et gérer l'historique des versions. Il suffit de Git et d'OpenSSH installés sur le serveur pour que cela fonctionne.

Résultat du test : l'interface et l'utilisation sont très similaires à DropBox (hormis la configuration de la partie serveur). À chaque modification du répertoire à synchroniser, un commit est fait sur le serveur Git. À la date du test, il y avait des synchronisations (ie commit) qui échouaient s'il y avait une déconnexion du réseau pendant le "commit" (ce qui est normal avec Git) ; par contre, Sparkleshare ne faisait pas de nouvelle tentative de commit à la reconnexion.

Syncany

Syncany permet de chiffrer ses données avant l'envoi sur le serveur mais sa particularité réside dans les multiples possibilités de backend pour stocker les données sur le serveur. Il est en effet possible d'utiliser un autre fichier local, de l'IMAP, du FTP, du SSH/sFTP, du CIFS, différentes offres de stockage en ligne… Une version stable n'est pas encore sortie et le logiciel est toujours en développement. Syncany fonctionne de manière transparente : les sauvegardes et synchronisations sont automatiques à chaque ajout/modification/suppression d'un fichier sur le(s) répertoire(s) à synchroniser.

Synkron

Interface élégante, semble pouvoir synchroniser plusieurs dossiers à partir d'une même source (un site web, un site de backup, et le NAS à partir de la zone de dév ?).

Unison

Unison permet de synchroniser 2 dossiers locaux ou local/ssh. Pour ce dernier cas, il y a besoin d'une version d'Unison identique des deux côtés. Cela ne l'empêche pas de synchroniser avec des dossiers distants FTP/SMB via les lecteurs réseaux (sous windows) ou les points de montages (Linux/OSX).

Aller plus loin

  • # ownCloud

    Posté par  (site web personnel) . Évalué à 7.

    Il est à noter que ownCloud dispose maintenant de clients natifs windows, linux et android, un client ios/macos est en cours de finalisation (il y a même un morceau de client webos sur le dépot git ;-)), voir http://owncloud.org/sync-clients/.

    Cela rend ownCloud vraiment intéressant pour la mise en place de services auto hébergés (calendrier, contacts, fichiers, photos etc), avec synchronisation facile "à la dropbox" grâce aux clients natifs. Il existe aussi des instances ou on peut simplement s'enregistrer et bénéficier de quelques Go gratuitement pour tester ou utiliser (owncube.com ou getfreecloud.com par exemple).

    Bref, un projet libre qui avance bien, avec auto hébergement possible ou fournisseurs de service, je pense qu'il y a de l'avenir afin de ne pas être dépendant de nos amis google, dropbox et consorts :)

    • [^] # Re: ownCloud

      Posté par  (site web personnel) . Évalué à 2.

      C'est effectivement un projet que je surveille avec attentions.

      J'attends avec impatience le partage de calendrier et carnet d'adresse via ical / carddav.

      Salutations

    • [^] # Re: ownCloud

      Posté par  . Évalué à 3. Dernière modification le 05 mai 2012 à 10:01.

      J'ai testé régulièrement le client android au cours de sa phase de développement et encore aujourd'hui. Malheureusement au fil que le développement avançait, l'application fonctionnait de moins en moins bien sur mon smartphone ; maintenant qu'elle est en version finale, elle ne fonctionne plus du tout.

      Par contre j'ai l'impression qu'elle se limite au webdav (exit synchronisation caldav et carddav).
      D'ailleurs pour le webdav je ne suis pas certain que ça synchronise, il me semble que ce n'est qu'une interface et que les fichiers sont téléchargés depuis le serveur lorsqu'on veut les consulter.

      • [^] # Re: ownCloud

        Posté par  . Évalué à 1.

        Pour la synchro caldav/carddav, j'utilise les outils de dmfs (avec un serveur davical, mais je suppose qu'owncloud doit marcher). Ca marche super, et c'est bien intégré. En revanche, c'est payant, et pour l'instant, proprietaire, meme si le dev a promis qu'il libererait le code d'ici a l'année prochaine.

        • [^] # Re: ownCloud

          Posté par  . Évalué à 1.

          Oui j'ai testé la version beta pour la synchro carddav (qui, à défaut d'être libre est gratuite, ce qui reste appréciable pour effectuer des tests), ça semblait en effet fonctionner assez bien avec owncloud.

          Il faudra que je teste tout ça avec autre chose qu'owncloud ; ça peut passer pour un point de détail mais je trouve que les url à rallonge et impossible à retenir sont assez enquiquinantes lorsque l'on veut paramétrer un nouveau client (que ce soit pour le webdav, le caldav ou le carddav : même combat).

  • # FreeFileSync

    Posté par  (site web personnel) . Évalué à 5.

    Je me permettrai d'évoquer freefilesync, que j'utilise de temps en temps lorsque j'ai de gros répertoires à synchroniser sur windows.

    La possibilité de filtrer les éléments qui vont être supprimés / mis à jour, ajouter d'un coté ou de l'autre est intéressant.

    Pour ceux rébutés par l'interface un peu complexe et "playskool" de ce logiciel, je propose synctoy, de Microsoft. Pas libre, mais sobre et efficace.

    Cela étant dit, je n'ai, sous linux, rien trouvé de mieux ni de plus efficace que unison et unison-gtk, même si la nécessité d'avoir les même versions de chaque coté est un peu pénible.

    Mes 2 ¢

    • [^] # Re: FreeFileSync

      Posté par  . Évalué à 1.

      Effectivement, il me semble que c'est le point fort de dropbox : la possibilité de ne synchroniser que certains dossiers/fichiers. J'avais cru comprendre que Sparkleshare permettait cela, mais j'ai un peu un doute, ne l'ayant jamais utilisé. Pour le coup, je trouve que ca manque a la depeche. Si quelqu'un a des infos, je suis preneur…

    • [^] # Re: FreeFileSync

      Posté par  (site web personnel) . Évalué à 1.

      Freefilesync existe évidemment aussi sous Linux.

  • # grsync

    Posté par  . Évalué à 1.

    Il y a aussi grsync : rsync + interface GTK.

    • [^] # Re: grsync

      Posté par  (site web personnel) . Évalué à 2.

      Avec (gr)rsync, la synchonisation est uni-directionnelle : on pousse d'une machine sur l'autre. S'il y a des modifications croisées, ça ne marche plus correctement ! (contrairement aux autres logiciels cités)

      • [^] # Re: grsync

        Posté par  . Évalué à 1.

        Exact, c'est du backup, pas de la sync. Au temps pour moi.

        • [^] # Re: grsync

          Posté par  (site web personnel) . Évalué à 3.

          si tu utilises l'option "--delete", ça reste de la synchro unidirectionnelle, pas du backup.

  • # csync

    Posté par  . Évalué à 3.

    À noter l'excellent travail de csync: http://www.csync.org/

    Il me semble d'ailleurs que c'est sur csync que s'appuie le client de owncloud (la dernière fois que j'ai compilé en tout cas c'était le cas).

    Éric

    eric.linuxfr@sud-ouest.org

    • [^] # Re: csync

      Posté par  (site web personnel) . Évalué à 5.

      J'ai testé rapidement le client owncloud, c'est bien csync qui est utilisé… Par contre, il plantait chez moi sur des fichiers avec des noms exotiques…

      Mais perso, je préfère dolphin + webdav et gérer moi même le dossier distant, c'est joli les trucs genre ubuntu one/owncloud-sync mais quand tu fais une connerie sur une machine, tu la fais sur tout le reste de tes postes dont le serveur…

      • [^] # Re: csync

        Posté par  . Évalué à 5.

        ce que l'on veut c'est la synchronisation … ça n'empêche pas la sauvegarde de cet espace synchronisé.

  • # webdav + unison en local

    Posté par  . Évalué à 6.

    Un serveur webdav, des postes clients qui monte le répertoire (disque distant sous windows, montage davfs2 sous linux) et ont à côté une réplique locale du répertoire.

    Un coup d'unison entre les répertoires sur les postes clients, travail sur la réplique et une fois les modifications terminées, re-coup d'unison.

    Pour que ça fonctionne sans anicroche (on mélange du windows et du linux, avec le réseau en dessous, c'est pas rien…), il faut utiliser quelques options d'unison :

    -perms 0 -fastcheck true -ignoreinodenumbers

    On gère comme ça quelques milliers des fichiers (txt, html, odt, pdf, png, etc) depuis 5 ans à plusieurs derrière de l'adsl (serveur compris).

    • [^] # Re: webdav + unison en local

      Posté par  . Évalué à 2.

      Cela me semble une solution très élégante et robuste.
      Pourrais-tu détailler un peu plus ta configuration ?

      J'utilise Dropbox actuellement et je dois avouer que la possibilité de partager des dossiers (et des liens publics) et d'avoir un "undo" sont appréciables. Penses-tu qu'il est possible d'avoir aussi cela avec ta solution ?

      Autre chose, est-ce que Unison détecte bien les rename/move/copy afin d'optimiser ?
      Il est marqué plus bas qu'il utilise md5sum, donc je suppose que oui. Mais sur le wiki, il est indiqué que non :
      http://en.wikipedia.org/wiki/Comparison_of_file_synchronization_software

      Merci d'avance

      • [^] # Re: webdav + unison en local

        Posté par  . Évalué à 1.

        Pourrais-tu détailler un peu plus ta configuration ?

        Côté serveur : configuration classique du webdav d'apache2 avec auth Basic.

        Côté client linux :
        http://ipduserveur/repwebdav/ /mnt/webdav davfs2 uid=moi,gid=moi 0 0 dans le fstab.
        /mnt/webdav/ ident passwd dans /etc/davfs2/secrets

        Côté client windows : Je ne sais plus trop… Pour XP il fallait un soft particulier, depuis ils se sont décidés à inclure le protocole webdav pour les lecteurs réseaux.

        Ensuite, un répertoire de travail en local qu'on synchronise avec le répertoire webdav. Du point de vue d'unison, ce sont deux répertoires locaux, c'est l'os qui se charge du lien réseau.

        et d'avoir un "undo" sont appréciables. Penses-tu qu'il est possible d'avoir aussi cela avec ta solution ?

        Non, tel quel, pas de undo. Nous avons réfléchis à l'époque à l'ajout d'une couche "gestionnaire de version", mais ça devenait un usine à gaz. Du coup, on reste simple (un outil, une fonction) : le webdav pour la synchro, des backup perso pour la sécurité ou le retour en arrière.

        Autre chose, est-ce que Unison détecte bien les rename/move/copy afin d'optimiser ?

        Non. Les md5 servent uniquement à détecter des modifications sur un fichier.

        Mais comme dit plus bas, en utilisation sur le réseau sans serveur unison en face, il vaut mieux désactiver cette fonctionnalité (c'est l'option fastcheck), sinon unison va devoir télécharger chaque fichier distant pour calculer ce md5. Pas d'inquiétude cependant, la comparaison de la taille et de la date suffisent largement à détecter les modifs, en tout cas pour notre usage.

      • [^] # Re: webdav + unison en local

        Posté par  (site web personnel) . Évalué à 1.

        J'utilise un système similaire (unison pour synchroniser deux portables sur un serveur maison). Pour le "undo" j'ai installé rsnapshot sur le serveur. Ca permet de revenir en arrière facilement sans trop de contraintes d'espaces disques (rsnapshot utilise des hard-link pour ne stocker qu'une fois les fichiers identiques entre plusieurs versions).

    • [^] # Re: webdav + unison en local

      Posté par  (site web personnel, Mastodon) . Évalué à 1. Dernière modification le 06 mai 2012 à 15:41.

      Hello!

      Ta solution m'intéresse bien, mais jusqu'ici j'ai toujours eu des problèmes avec mon répertoir webdav sur mon serveur. J'utilise le module d'apache2 pour gérer le webdav et j'ai activé l'authentification dite "Basic".

      Mais lorsque je l'utilise avec Nautilus (3.2), j'ai toujours des problèmes incompréhensibles (style, je n'ai aucun droit alors que la minute d'avant je pouvais naviguer dans mon dossier… ou encore des erreurs de flux…). J'ai même essayé avec le webdav de l'EPFL et les mêmes erreurs me parviennent.

      J'ai également essayer d'utiliser dav2fs pour monter le répertoire, puis utiliser Nautilus pour naviguer, mais j'ai à peu près les mêmes problèmes.

      Aurais-tu de la documentation sur webdav (j'ai beau cherché sur Seeks, mais je retombe toujours sur les mêmes configurations d'apache2) ?

      J'ai quand même gardé mon webdav de côté parce que LibreOffice et son extension le gère très bien (ce qui permet déjà de partager quelques documents par l'interface web).

      • [^] # Re: webdav + unison en local

        Posté par  . Évalué à 2.

        Je n'ai pas de doc particulière à te recommander, j'utilise une configuration tout à fait classique sans fioriture.

        Cela dit, à lire ton message, je me demande si le problème ne viendrait pas plutôt de Gnome, plus précisément de la couche gvfs/gio (Nautilus qui patine, OpenOffice qui passe bien).

        As-tu essayé d'accéder à ton répertoire avec d'autres gestionnaires de fichiers (rox-filer par exemple pour rester en gtk mais sans le vfs de gnome) ?

  • # Temps de synchronisation

    Posté par  (site web personnel) . Évalué à 1.

    J'utilise UNISON et force est de constater que le check pour savoir si les répertoires sont identiques est super long sur une connexion bas débit (adsl, wifi..)
    J'ai l'impression que les fichiers sont transférés à chaque fois? Ne serait-il pas plus judicieux de faire comparer les signatures des fichiers? Mais pour cela il faudrait générer les signatures sur le PC d'en face…

    • [^] # Re: Temps de synchronisation

      Posté par  . Évalué à 6.

      Etonnant, justement des mes essais persos unison est justement le plus rapide, il conserve une db des fichiers modifiés pour éviter de comparer les répertoires à chaque fois.

      • [^] # Re: Temps de synchronisation

        Posté par  . Évalué à 2.

        Ça reste super lent lors de la première synchro… Mais c'est un bon logiciel clairement.

        • [^] # Re: Temps de synchronisation

          Posté par  (site web personnel, Mastodon) . Évalué à 5.

          Oui c'est normal il fait un md5sum de chaque fichier, comme ça il évite de re-transférer un fichier qui a juste été renommé ou copié. Du coup pour backup sur ADSL c'est tip top !

          « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)

          • [^] # Re: Temps de synchronisation

            Posté par  . Évalué à 2.

            Oui je sais bien. Je trouve que c'est dommage de ne pas pouvoir lui indiquer, avant de lancer la première synchro, que pour tel ou tel fichier il ne doit pas vérifier les modifications donc ne pas calculer le md5sum, je pense notamment à des fichiers vidéo qui sont lourds et que l'on modifie rarement. Je devrais leur soumettre l'idée tiens.

            • [^] # Re: Temps de synchronisation

              Posté par  (Mastodon) . Évalué à 4.

              Tu peux toujours utiliser unison avec l'option fastcheck. Et éventuellement utiliser 2 profiles, un sans l'option fastcheck qui exclue les fichiers à grosses volumétries (.iso, fichiers videos, …) et un autre qui ne synchronise justement que les vidéos/isos etc.

              L'autre solution c'est d'utiliser l'option fastcheck 9x sur 10 et la désactiver une fois de temps en temps.

    • [^] # Re: Temps de synchronisation

      Posté par  . Évalué à 2.

      est-ce que tu utilises le protocole unison sur le réseau (tu as un serveur unison coté serveur) ou bien est-ce que tu monte un répertoire distant et que tu utilises unison en local sur la machine cliente ?
      C'est très différent, avec unison en mode serveur c'est beaucoup beaucoup plus efficace.
      coté client je suppose que tu es sous linux, pour lequel le scan des modifications est très rapide, sous windows il y a une option un peu risquée a mettre en place pour gagner du temps si c'est vraiment trop long.

  • # Un autre comparatif

    Posté par  . Évalué à 4.

    Merci pour cette dépêche ma foi fort intéressante.

    Etant un fan de Mercurial, j'ajouterai Acid Rain : http://myacidrain.com/

    Ainsi que ce comparatif très bien fait :
    http://sciunto.wordpress.com/2011/08/06/petite-revue-des-solutions-libres-de-synchronisation/

  • # Un autre candidat au titre de meilleur clickodrome de rsync : luckyBackup

    Posté par  . Évalué à 2.

    C'est par ici la bonne soupe : http://kde-apps.org/content/show.php/luckyBackup?content=94391

    Pas essayé, mais ça à l'air intéressant. L'interface est pas trop vilaine.

  • # bup et obnam

    Posté par  (Mastodon) . Évalué à 3.

    Bup et obnam permettent de centraliser des fichiers, de faire de la dé-duplication et des snapshots. Contrairement à rsync, si un fichier a été renommé, ou est présent dans plusieurs dossiers avec des noms différents, celui-ci sera gardé sur le disque qu'une seule fois. De la même façon, si le contenu d'un gros fichier a changé de 1% entre deux copies, uniquement ce 1% sera envoyé sur le réseau puis enregistré. C'est redoutable pour sauvegarder des machines virtuels.
    Les snapshots marchent "à la git", on peut faire des snapshots tout les jours si on le souhaite.
    Le seul défaut que j'ai pour le moment qui m'empêche de supprimer rsync partout, est le support de Windows.

    • [^] # Re: bup et obnam

      Posté par  . Évalué à 1.

      Très intéressant ces deux logiciels.
      Peux-tu faire un retour rapide sur ton utilisation et pourquoi tu utilises les deux (et pas un seul) ?

      Pour bup, le désavantage que je vois est qu'il est basé sur Git et que cela nécessite donc peut-être que chaque client conserve tout l'historique.

      Par contre les deux sont pour du backup et pas vraiment pour de la synchronisation non ?

      Merci

  • # Sparkleshare et commit

    Posté par  . Évalué à 2.

    Salut,

    quand tu parles de commit, tu veux plutôt dire push non? Git n'a pas besoin de connexion réseau pour faire un commit…

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.