J'ai trois ordinateurs à la maison et j'aimerais que l' /home/
arborescence des dossiers 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 rsync
suffisant pour faire ça? et comment?
Réponses:
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 agréable pour vous permettre de traiter 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 fonctionne 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é la façon dont le projet est exécuté 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 l' 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 une machine locale. Seafile utilise un modèle de données similaire à git pour suivre les changements. 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 du 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, 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 machines et XMPP pour communiquer les modifications.
git-annex - outil de ligne de commande pour déplacer des fichiers, basé sur git. Il y a une procédure pas à pas illustrative ici: http://git-annex.branchable.com/walkthrough/
Tonido - gratuiciel. 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 à modifier 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 - Syncronise 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. 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 de ce problème pour 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 dossiers volumineux - 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 et le télécharge à nouveau comme nouveau, puis supprime 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 ce problème en raison de l'adressage basé sur le contenu qu'il utilise, mais je ne le sais pas avec 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 vous recommande de lire l'article de Mat Honan sur le piratage pour avoir un compte rendu 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 évitera la douleur d'être obligé de gérer les problèmes de vitesse / performance / espace disque liés à la synchronisation automatique de tout. 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:
piratage / tous /
la source
Unison pourrait être un bon candidat:
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 :
la source
Que diriez-vous de mettre vos fichiers dans un système de contrôle de version tel que 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
Mise à jour : Un effet secondaire intéressant 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 vous obtenez cela 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.
la source
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 à deux endroits à la fois (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 "transmettre les modifications" ... à l'un de vos ordinateurs 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 (au cas où des personnes ne se déconnecteraient pas) serait exécuté 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.
la source
Je pense que vous pouvez obtenir ce que vous voulez mieux en installant NFS dans un dossier de base commun. Consultez cet article http://www.linuxjournal.com/article/4880
la source
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:
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:
la source
Découvrez lsyncd
la source
Jetez un coup d’œil à la Dropbox http://www.getdropbox.com/ Cross platform Win / Linux / Mac
la source
Montez
/home
d'un ordinateur sur les deux autres. Automount fonctionne plutôt bien pour cela.la source
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.
la source
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 tromperie 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". Au moment où je réalise que je dois modifier quelque chose - je le fais sur Master et Slave capte ces modifications en synchronisation.
De plus, certains scripts bash doivent fonctionner différemment sur ces machines. J'ai donc édité mon /etc/bash.bashrc:
Maintenant, les scripts savent quel hôte ils servent;)
la source
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.
la source
PowerFolder - Synchroniser les fichiers, synchroniser les dossiers, stockage à distance, sauvegarde et 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.
la source
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. Mettez vos fichiers sur un serveur NAS, ils sont devenus relativement abordables récemment (à partir de 150 $) et un bon ne consomme pas beaucoup d’énergie. Pas de problèmes de synchronisation jamais.
Principal inconvénient: plus lent qu'une copie locale
la source
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.
la source
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 via ssh.
la source