135 votes

Comment synchroniser le dossier personnel entre plusieurs ordinateurs ?

J'ai trois ordinateurs à la maison, et j'aimerais avoir l'accès à l'Internet. /home/ L'arborescence des dossiers est synchronisée entre les trois.
Tous les fichiers/dossiers (sauf ceux qui sont cachés) qui sont modifiés/ajoutés/supprimés dans l'un des trois ordinateurs sont mis à jour dans les deux autres.

Est rsync suffisamment pour le faire ? et comment ?

109voto

Sanghyun Lee Points 497

Voici une liste de choses qui pourraient potentiellement résoudre ce problème, chacune équilibrant les compromis que vous devez faire différemment ; vous devrez donc faire vos propres choix et essayer les choses par vous-même :

  • Unison - Comme d'autres l'ont mentionné, ce système est exécuté manuellement, mais il est très rapide, fiable et efficace. Il faut que les deux machines à synchroniser soient allumées en même temps. Il possède une interface utilisateur agréable pour vous permettre de gérer les conflits presque inévitables, et suit et propage les suppressions correctement. L'application graphique/le paquetage s'appelle unison-gtk.

  • OwnCloud - Le stockage en nuage fonctionne sur votre propre serveur. Vous aurez besoin d'une machine pour partir. Nécessite une quantité raisonnable d'installation. Exécute un serveur web Apache 2 complet et une base de données SqlLite ou MySQL sur le serveur. Fonctionne de façon similaire à Dropbox avec un client de bureau, mais le serveur est sous votre contrôle. edit : OwnCloud a récemment subi quelques changements dans la façon dont le projet est géré, et a maintenant une nouvelle édition entièrement open source (c'est-à-dire pas d'édition 'entreprise' fermée) sous le nom de NextCloud (voir cette interview sur youtube avec le développeur original d'OwnCloud pour plus de détails).

  • SparkleShare - utilise git pour garder les fichiers en synchronisation. Selon la page d'accueil : bon pour beaucoup de petits fichiers, pas bon pour beaucoup de gros fichiers comme la musique ou la collection de photos.

  • Seafile - Fournit un composant serveur que vous pouvez installer sur une machine locale. Seafile utilise un modèle de données similaire à git pour le suivi des changements. Fournit des clients de synchronisation pour les ordinateurs de bureau, les tablettes et les smartphones. Un article de blog décrivant la configuration peut être trouvé à l'adresse suivante http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • Osync - "... outil de synchronisation de fichiers bidirectionnel écrit en bash et basé sur rsync. Il fonctionne sur des répertoires locaux et / ou distants via des tunnels ssh. Il est principalement destiné à être lancé comme tâche cron" (texte du site web)

  • PowerFolder - Projet GPL v2 basé sur Java. Le site Web principal met en avant des offres commerciales, de sorte que la manière d'utiliser le fichier .jar fourni n'est pas claire.

  • Rsync - rapide et efficace, il existe depuis des dizaines d'années, mais il ne conserve pas d'historique et vous devez choisir une direction pour décider si un fichier est nouveau ou supprimé. Des outils graphiques sont disponibles tels que gwRsync .

  • Lsyncd - surveille les dossiers/fichiers pour déclencher la réplication rsync

  • dvcs-autosync - écrit en Python, utilise git pour stocker et partager les modifications entre les machines, et XMPP pour communiquer les modifications.

  • git-annex - Outil en ligne de commande pour déplacer des fichiers, basé sur git. Il y a un guide illustratif ici : http://git-annex.branchable.com/walkthrough/

  • Tonido - freeware. Fournit une application de bureau qui permet de partager des fichiers avec d'autres appareils. Propose également des offres commerciales de cloud et l'ordinateur portable TonidoPlug.

  • BitTorrent Sync (freeware) - synchronisation de fichiers peer-to-peer basée sur BitTorrent. Je ne sais pas grand-chose à ce sujet car je ne l'utiliserai pas car il n'est pas open source et je n'ai pas confiance en lui pour garder mes données dans mon réseau local. N'hésitez pas à modifier cette réponse avec de meilleures informations / expériences réelles.

  • SyncThing - Développé comme une alternative open source à BitTorrent Sync. Il ne dispose pas actuellement de certaines des fonctionnalités avancées de BitTorrent Sync, telles que les pairs non fiables. Il est en cours de développement.

  • Les services commerciaux hébergés tels que dropbox, ubuntu one, google drive, apple iCloud sont tous rapides, bon marché et pratiques, mais ils nécessitent tous de confier toutes vos données à une société et d'avoir une connexion internet raisonnablement rapide.

  • ギット / subversion - Utiliser directement un système de contrôle des sources. Cette approche est populaire auprès de certains utilisateurs qui connaissent ces systèmes pour les avoir utilisés comme outils de programmation.

  • CloudFS - syncroniser un système de fichiers entier, basé sur la technologie des clusters

  • Montage NFS - en gros, votre maison vit sur une seule machine et vous y accédez via le réseau, ce qui n'est pas bon pour les ordinateurs portables que vous emportez avec vous. Plus d'informations : http://www.linuxjournal.com/article/4880


Facteurs à prendre en compte pour prendre votre décision :

  • Serveur central - certaines solutions exigent qu'une machine soit allumée en permanence (ou au moins lorsque vous avez besoin de vous synchroniser) pour que les autres machines puissent se synchroniser. Il peut s'agir de l'une de vos machines existantes ou d'une machine distincte telle qu'un NAS. Attention à l'augmentation des factures d'électricité.

  • Automatique / Manuel / Planifié - La meilleure façon d'éviter d'avoir à résoudre des conflits lorsqu'un élément est modifié sur plus d'une machine est d'avoir un programme sur chaque machine qui surveille les changements et les synchronise immédiatement, de cette façon vous réduisez la possibilité de vous retrouver avec plusieurs versions. Avec les processus manuels, vous devez toujours vous rappeler de lancer la synchronisation.

  • Accès à distance - si vous souhaitez synchroniser vos données en dehors de votre réseau local (c'est-à-dire à la maison), pensez aux implications en matière de sécurité.

  • Sécurité - vos données quittent-elles votre réseau de manière cryptée ou non, quelle est la sécurité du transfert entre les machines. Que se passe-t-il si quelqu'un capture vos données en cours de route et que l'on découvre plus tard que le cryptage présente des failles ? Qui contrôle le serveur qui conserve vos données, les données sont-elles cryptées, pouvez-vous faire confiance à des tiers ? Devez-vous percer des trous dans votre routeur pour obtenir un accès à distance ? Combien de temps les fichiers "supprimés" et les métadonnées associées restent-ils sur les appareils synchronisés et sur le serveur central ? Effectuez-vous une synchronisation entre un stockage crypté et un stockage non crypté ?

  • Déplacement de grands dossiers - les solutions que j'ai essayées ont toutes un problème : lorsque vous déplacez / renommez un fichier ou un dossier, la synchronisation ne le comprend pas et le télécharge à nouveau en tant que nouveau, puis supprime l'ancienne copie.

  • Capacité du disque

  • Sauvegardes - la synchronisation n'est pas une sauvegarde. Si vous supprimez un fichier important par erreur, la plupart des éléments ci-dessus supprimeront joyeusement toutes vos autres copies. Je vous recommande de lire L'article de Mat Honan sur le piratage informatique pour un bon compte rendu de ce qui peut arriver si vous mettez tous vos œufs numériques dans un seul panier numérique, pour ainsi dire.


Je recommande de ne pas synchroniser l'ensemble du dossier personnel, mais plutôt de choisir des dossiers spécifiques à synchroniser, tels que Documents/ , Pictures/ etc. Vous éviterez ainsi d'être obligé de faire face aux problèmes de vitesse, de performances et d'espace disque liés à la synchronisation automatique de toutes les données. Cela évite également d'avoir à gérer des listes d'exclusion.

Comme je continue à essayer de trouver quelque chose qui fonctionne pour moi personnellement, j'essaierai de tenir cette réponse à jour avec des informations utiles. J'ai regroupé les informations de toutes les autres réponses en une seule réponse complète.

Références :

  • LinuxFormat - Février 2014 LXF180 p31, "Tour d'horizon du stockage hébergé".

hacking/all/

27voto

Unison pourrait être un bon candidat :

Unison est un outil de synchronisation de fichiers. pour Unix et Windows. Il permet à deux répliques d'une collection de fichiers et fichiers et de répertoires sur différents différents (ou différents disques sur le même même hôte), de les modifier séparément, puis de les mises à jour en propageant les modifications en propageant les modifications de chaque réplique à l'autre.

Il fait déjà des synchronisations dans les deux sens. Voir la mise à jour ci-dessous.

J'ai appris qu'il y a très peu de choses que rsync ne peut pas faire, et il peut probablement fournir une solution égale ou meilleure, mais vous devrez attendre qu'un expert en rsync se présente pour cette solution.

Mise à jour : Oui, Unison peut synchroniser plus de 2 machines. Depuis leur manuel utilisateur :

Utiliser Unison pour synchroniser plus de deux machines

Unison est conçu pour synchroniser des paires de répliques. Cependant, il est possible de l'utiliser pour synchroniser des groupes plus importants de machines en effectuant plusieurs synchronisations par paires.

Si vous devez le faire, la façon la plus fiable de mettre en place les choses est d'organiser les machines dans une "topologie en étoile", avec une machine désignée comme "hub" et les autres comme "spokes", et avec chaque machine spoke se synchronisant uniquement avec le hub. Le grand avantage de la topologie en étoile est qu'elle élimine la possibilité de confondre les "faux conflits" résultant du fait qu'une archive séparée est maintenue par Unison pour chaque paire d'hôtes qu'il synchronise.

19voto

Candidasa Points 1560

Et si vous mettiez vos fichiers dans un système de contrôle de version comme SubVersion ou git ?

Je ne versionne pas tout mon répertoire personnel, mais seulement une poignée de sous-répertoires contenant des éléments importants. Mais j'envisage de passer à git, qui semble mieux convenir à ce type de travail. ( Une recherche rapide vous mettra dans la bonne direction. ).

Bonne chance


Mise à jour : Un effet secondaire agréable avec git est qu'il est facile d'avoir des fichiers spécifiques à un ordinateur, puisque vous avez seulement besoin d'avoir une branche pour cet ordinateur (et dans git vous l'avez par défaut). Ainsi, vous n'avez pas besoin d'avoir exactement les mêmes fichiers sur tous les ordinateurs, ils doivent seulement être similaires, et avoir une branche "principale" commune avec les choses que vous voulez sur tous les différents ordinateurs.

6voto

Ryan Raten Kuhar Points 2769

Votre principal problème lorsque vous essayez de faire cela est de décider comment fusionner les modifications, propager les suppressions et résoudre les conflits. C'est difficile à faire de manière complètement automatisée, surtout si vous avez une configuration de trois ordinateurs utilisés par plusieurs personnes.

Si vous séparez les utilisateurs, les choses deviennent beaucoup plus simples. Parce qu'un utilisateur ne peut pas être à deux endroits à la fois (et donc générer des conflits), vous pourriez alors configurer un travail rsync à exécuter à la connexion pour "obtenir des changements" et à la déconnexion pour "pousser des changements" ... vers l'un de vos ordinateurs qui serait le maître ... donc à ce niveau de granularité, vous synchroniseriez /home/myuser à chaque fois plutôt que l'ensemble de /home/. Un raffinement supplémentaire (dans le cas où les gens ne se déconnectent pas) serait d'exécuter le push script après une courte période d'inactivité.

Il existe de nombreuses autres solutions potentielles, mais aucune ne résout ce problème comme par magie, à ma connaissance. La première étape consiste probablement à réfléchir à la manière dont vous utilisez les machines et à élaborer une politique de synchronisation adaptée au comportement de vos utilisateurs.

5voto

jspeaks Points 171

Je pense que vous pouvez mieux réaliser ce que vous voulez en montant par NFS un dossier personnel commun. Consultez cet article http://www.linuxjournal.com/article/4880

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X