web-dev-qa-db-fra.com

Comment synchroniser le dossier de base entre plusieurs ordinateurs?

J'ai trois ordinateurs à la maison et j'aimerais que l'arborescence des dossiers /home/ soit synchronisée entre les trois.
Tous les fichiers/dossiers (sauf ceux qui sont cachés) qui sont modifiés/ajoutés/supprimés sur l’un des trois ordinateurs sont mis à jour sur les deux autres.

Est-ce quersyncest suffisant pour le faire? et comment?

112
lamcro

Voici une liste d'éléments susceptibles de résoudre ce problème, chacun équilibrant les compromis que vous devez faire différemment pour que vous deviez faire vos propres choix et essayer vous-même:

  • Unison - comme mentionné par d'autres, il est exécuté manuellement, mais est très rapide, fiable et efficace. Exige que les deux machines en cours de synchronisation soient allumées en même temps. Il a une interface utilisateur Nice pour vous permettre de gérer les conflits presque inévitables, et suit et propage les suppressions correctement. L'application/package graphique s'appelle unison-gtk.

  • OwnCloud - Le stockage dans le cloud s'exécute sur votre propre serveur. Vous aurez besoin d'une machine pour partir. Nécessite une quantité raisonnable de configuration. Exécute un serveur Web complet Apache 2 et une base de données SqlLite ou MySQL sur le serveur. Fonctionne comme Dropbox avec un client de bureau, mais le serveur est sous votre contrôle. edit: OwnCloud a récemment modifié le mode d’exécution du projet et dispose maintenant d’une nouvelle source entièrement ouverte (c’est-à-dire sans édition «entreprise» à source fermée) sous le couvert de NextCloud , (voir interview youtube avec le développeur original de OwnCloud pour plus de détails).

  • SparkleShare - utilise git pour maintenir les fichiers synchronisés. Selon la page d'accueil: convient à de nombreux fichiers plus petits, pas à beaucoup de fichiers volumineux tels que la musique ou la collection de photos.

  • Seafile - Fournit un composant serveur que vous pouvez installer sur un ordinateur local. Seafile utilise un modèle de données similaire à git pour suivre les modifications. Fournit des clients de synchronisation pour ordinateurs de bureau, tablettes et smartphones. Un article de blog décrivant la configuration peut être trouvé à 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 les répertoires locaux et/ou distants via des tunnels ssh. Il est principalement destiné à être lancé en tant que tâche cron" (texte de le site Web)

  • PowerFolder - Projet GPL v2 basé sur Java. Le site Web principal propose des offres commerciales, de sorte qu'il n'est pas clair comment utiliser le fichier .jar fourni.

  • Rsync - rapide et efficace, il existe depuis des décennies. Toutefois, il ne conserve pas d’historique. Vous devez donc 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 ordinateurs et XMPP pour communiquer les modifications.

  • git-annex - Outil en ligne de commande pour contourner les fichiers, basé sur git. Il existe une procédure d’illustration ici: http://git-annex.branchable.com/walkthrough/

  • Tonido - freeware. Fournit une application de bureau qui partagera des fichiers avec d'autres appareils. Fournissez également des offres commerciales dans le cloud et l'ordinateur à fiche TonidoPlug.

  • BitTorrent Sync (freeware) - synchronisation de fichiers entre homologues basée sur BitTorrent. Je ne connais pas grand-chose à ce sujet, car je ne l'utiliserai pas parce que ce n'est pas open source et que je ne lui fais pas confiance pour conserver mes données sur mon réseau local. N'hésitez pas à éditer cette réponse avec de meilleures informations/expériences réelles.

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

  • Les services hébergés commerciaux tels que dropbox, ubuntu one, google drive et Apple iCloud sont rapides, peu coûteux et pratiques, mais ils nécessitent tous de faire confiance à une entreprise disposant de toutes vos données et nécessitent une connexion Internet relativement rapide.

  • Git / Subversion - Utilisez directement un système de contrôle de source. Complètement manuel et peut être une approche un peu complexe mais populaire auprès de certains utilisateurs familiarisés avec ces systèmes en les utilisant comme outils de programmation.

  • CloudFS - synchronise un système de fichiers complet, basé sur une technologie de cluster

  • Montage NFS - votre maison n’est habitée que par un seul ordinateur et vous y accédez par le réseau, ce qui n’est pas bon pour les ordinateurs portables que vous emportez avec vous. Plus d'infos: http://www.linuxjournal.com/article/4880


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

  • Serveur central: certaines solutions requièrent qu'une machine soit allumée en permanence (ou du moins lorsque vous devez synchroniser) pour que d'autres machines puissent se synchroniser. Cela peut être une de vos machines existantes ou une machine séparée telle qu'un NAS. Attention aux factures d'électricité accrues.

  • Automatique/Manuel/Planifié - Le meilleur moyen d'éviter de devoir résoudre des conflits lorsque quelque chose est modifié sur plusieurs machines consiste à avoir un programme sur chaque machine qui surveille les modifications et se synchronise immédiatement, ce qui vous permet de réduire les risques de multiples versions. Avec les processus manuels, vous devez toujours vous rappeler d’exécuter la synchronisation.

  • Accès à distance - si vous souhaitez effectuer une synchronisation en dehors de votre réseau local (à domicile), réfléchissez aux conséquences que cela peut avoir sur la sécurité.

  • Sécurité - vos données laissent-elles votre réseau crypté ou non, le transfert entre les machines est-il sécurisé? Que se passe-t-il si quelqu'un capture vos données en déplacement et que plus tard, le cryptage présente des défauts? 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éta-données associées restent-ils sur les périphériques synchronisés et sur le serveur central? Etes-vous en train de synchroniser entre le stockage crypté et non crypté?

  • Déplacement de gros dossiers - les solutions que j'ai essayées ont toutes le même problème: lorsque vous déplacez/renommez un fichier ou un dossier, la synchronisation ne comprend pas cela, il le télécharge à nouveau comme nouveau et supprime ensuite l'ancienne copie. Aidez-nous en signalant toutes les solutions ci-dessus capables de traiter ce problème (je suppose que les solutions basées sur git font ce que git ne souffre pas de cela en raison de l'adressage basé sur le contenu utilisé ne les avez pas utilisés).

  • Capacité du disque

  • Sauvegardes - la synchronisation n'est pas une sauvegarde. Supprimez un fichier important par erreur et bon nombre des éléments ci-dessus supprimeront joyeusement toutes vos autres copies. Je recommande de lire l'article de Mat Honan sur le piratage pour un bon récit de ce qui peut arriver si vous mettez tous vos œufs numériques dans un même panier numérique, pour ainsi dire.


Je recommande de ne pas synchroniser l'intégralité du dossier de base, mais de sélectionner des dossiers spécifiques à synchroniser, tels que Documents/, Pictures/, etc. Cela évite également de devoir maintenir des listes d'exclusion.

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

Références:

  • LinuxFormat - Février 2014 LXF180 p31, "Roundup de stockage hébergé"

piratage/tous /

86
Tim Abell

Unison pourrait être un bon candidat:

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

Il effectue déjà des synchronisations bidirectionnelles. Voir mise à jour ci-dessous.

J'ai appris qu'il y a très peu de choses que rsync ne peut pas faire, et qu'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. De leur manuel d'utilisation :

Utilisation de Unison pour synchroniser plus de deux machines

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

Si vous avez besoin de le faire, la méthode la plus fiable consiste à organiser les machines en une "topologie en étoile", une machine étant désignée "hub" et les autres en tant que "rayons", et chaque machine à rayons se synchronisant seulement avec le moyeu. Le gros avantage de la topologie en étoile est qu’elle élimine la possibilité de confondre «conflits parasites» découlant du fait qu’un archive distincte est gérée par Unison pour chaque paire d’hôtes synchronisés.

28
nagul

Que diriez-vous de mettre vos fichiers dans un système de contrôle de version comme Subversion ou git?

Je ne fais pas la version complète de mon répertoire personnel, mais seulement une poignée de sous-répertoires contenant des informations importantes. Mais je songe à me convertir en git, car cela semble mieux pour ce type de travail. ( une recherche rapide va vous envoyer dans la bonne direction ).

Bonne chance


Update : Un bel effet secondaire avec git est qu’il est facile d’avoir des fichiers spécifiques à un ordinateur, puisqu’il vous suffit d’avoir une branche pour cet ordinateur (et que vous l’obtenez par défaut). Il n'est donc pas nécessaire que tous les ordinateurs contiennent exactement les mêmes fichiers, ils doivent être identiques et avoir une branche "principale" commune avec les éléments que vous souhaitez sur tous les ordinateurs.

19
Johan

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

Si vous séparez les utilisateurs, les choses deviennent beaucoup plus simples. Parce qu'un utilisateur ne peut pas être à la fois sur deux sites (et donc générer des conflits), vous pouvez ensuite configurer un travail rsync à exécuter lors de la connexion pour "obtenir les modifications" et vous déconnecter pour "Transférer les modifications" ... serait le maître ... donc à ce niveau de granularité, vous synchroniseriez/home/myuser à chaque fois plutôt que le tout/home /. Un raffinement supplémentaire (dans le cas où des personnes ne se déconnectent pas) serait exécuté par le script Push après une courte période d'inactivité.

Autant que je sache, il existe de nombreuses autres solutions possibles, mais aucune ne résout ce problème comme par magie. La première étape consiste probablement à réfléchir à la manière dont vous utilisez les machines et à définir une stratégie de synchronisation adaptée au comportement de votre utilisateur.

6
Ira Cooke

Je pense que vous pouvez obtenir ce que vous voulez mieux en installant NFS dans un dossier de base commun. Découvrez cet article http://www.linuxjournal.com/article/4880

5
jspeaks

Départ lsyncd

Lsyncd surveille une interface de moniteur d'événements d'arbres de répertoires locaux (inotify ou fsevents). Il regroupe et combine les événements pendant quelques secondes, puis génère un (ou plusieurs) processus pour synchroniser les modifications. Par défaut c'est rsync. Lsyncd est donc une solution Live Mirror légère, relativement facile à installer, qui ne nécessite pas de nouveaux systèmes de fichiers ni de blocs périphériques, et qui n’entrave pas les performances du système de fichiers local.

Rsync + ssh est une configuration d'action avancée qui utilise un SSH pour agir. Le fichier et le répertoire se déplacent directement sur la cible au lieu de retransmettre la destination du déplacement par le fil.

La personnalisation fine peut être réalisée via le fichier de configuration. Les configurations d'action personnalisées peuvent même être écrites de toutes pièces dans des couches en cascade allant des scripts Shell au code écrit en Lua language.layers allant des scripts Shell au code écrit en Lua.

4
eric

Cela ne fournira pas une solution complète, mais cela vous donnera un début:

Configurez un travail cron de temps en temps pour rynchroniser les fichiers. J'utilise une commande comme celle-ci:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh [email protected]:/path/to/home/

Ceci utilisera rsync pour ne copier que les modifications nécessaires, pas pour tout recopier à chaque exécution de la commande.

--stats et --progress sont optionnels et devraient probablement être exclus de vos scripts

le contenu de mon fichier rsync_backup_excludes.conf est le suivant:

dev/*
proc/*
lost+found/*
mnt/*
sys/*
4
Matt Cofer

Montez /home d'un ordinateur sur les deux autres. Automount fonctionne plutôt bien pour cela.

2
Xenoactive

Jetez un coup d'œil à dropbox http://www.getdropbox.com/ Cross platform Win/Linux/Mac

2
Boxdog

PowerFolder - Synchroniser les fichiers, synchroniser les dossiers, le stockage à distance, la sauvegarde et le partage de fichiers privé. Synchronisez votre ordinateur personnel et professionnel, partagez des photos de vacances ou travaillez ensemble sur des documents. La technologie sécurisée d'égal à égal de PowerFolder fonctionne sur Internet ou en réseau local.

1
Molly7244

Essayez dvcs-autosync .

Ceci est basé sur git, utilise XMPP pour informer les clients connectés des modifications de fichier et réagit aux événements de modification de fichier via des modifications inode. Donc, il est toujours informé juste après le changement de fichier, en cas de conflit, il s’appuie sur les méthodes éprouvées de git.

Je l'utilise depuis un certain temps maintenant pour remplacer Dropbox via des clés publiques SSH et cela fonctionne vraiment bien.

1
schlypel

Si vous souhaitez également synchroniser les configurations, les outils mentionnés ci-dessus sont totalement impuissants: les configurations sont souvent modifiées et de nombreux fichiers journaux créent des conflits et ne peuvent donc pas être fusionnés.
Ma déception est simple et stupide :) J'ai un poste de travail principal et tous les fichiers de "~" sont simplement copiés dans le deuxième "Esclave". Dès que je réalise que je dois modifier quelque chose, je le fais sur Master et Slave détecte ces modifications en synchronisation.

De plus, certains scripts bash doivent s’exécuter de manière différente sur ces machines, j’ai donc modifié mon /etc/bash.bashrc:

exportation OOHOST = Master

Maintenant, les scripts savent quel hôte ils servent;)

1
kolypto

Ubuntu One pourrait être ce que vous cherchez. Malheureusement, il est encore en phase bêta et je n’ai aucune expérience en la matière. Je ne sais donc pas si cela fonctionnerait pour vous.

1
Ilari Kajaste

Vous pouvez utiliser un script de synchronisation tel que osync, qui peut propager les fichiers supprimés et ne mettre à jour que les fichiers modifiés. http://www.netpower.fr/osync osync est basé sur rsync mais peut gérer de nombreux scénarios de synchronisation entre dossiers locaux ou distants sur ssh.

0
Orsiris de Jong

J'utilise SyncTwoFolders pour Mac et Syncback pour PC - le premier pour mes trois Mac à la maison (ordinateur portable inclus) et le second pour mon PC au travail. Les deux programmes disposent de diverses options de sauvegarde et de synchronisation, ce qui facilite la tâche une fois les préréglages configurés. Peasy facile! Je suis sûr qu'il existe d'autres versions de logiciels similaires disponibles pour Linux et Ubuntu.

0

Les solutions de contournement que je considérerais:

  • Dropbox.
    Principaux inconvénients: ce n’est pas gratuit pour une quantité raisonnable de données. Sinon, cela fonctionne parfaitement à mon humble avis

  • Un serveur NAS. Placez vos fichiers sur un serveur NAS, ils sont devenus relativement abordables ces derniers temps (à partir de 150 $ environ) et un bon disque ne consomme pas beaucoup d’énergie. Pas de problèmes de synchronisation jamais.
    Principal inconvénient: plus lent qu'une copie locale

0
Rabarberski