2009-08-28 18:10:40 +0000 2009-08-28 18:10:40 +0000
121
121

Comment synchroniser le dossier d'accueil entre plusieurs ordinateurs ?

J'ai trois ordinateurs à la maison, et je voudrais 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 dans l'un des trois ordinateurs sont mis à jour dans les deux autres.

Est-ce que rsync est suffisant pour faire cela ? et comment ?

Réponses (14)

97
97
97
2014-01-18 17:52:37 +0000

Voici une liste de choses qui pourraient potentiellement résoudre ce problème. Chacune d'entre elles équilibre différemment les compromis que vous devez faire, de sorte que vous devrez faire vos propres choix et essayer les choses par vous-même :

  • Unison - comme mentionné par d'autres, cette opération est effectuée manuellement, mais elle est très rapide, fiable et efficace. Il faut que les deux machines soient synchronisées pour qu'elles fonctionnent en même temps. Il dispose d'une interface utilisateur agréable qui vous permet de gérer les conflits presque inévitables, et de suivre et propager correctement les suppressions. L'application/paquet graphique est appelé unison-gtk.

  • OwnCloud - Stockage en nuage exécuté sur votre propre serveur. Vous aurez besoin d'une machine à laisser en marche. Nécessite une configuration raisonnable. Fonctionne avec un serveur web Apache 2 complet et une base de données SqlLite ou MySQL sur le serveur. Le fonctionnement est similaire à celui de 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 dispose maintenant d'une nouvelle édition entièrement open source (c'est-à-dire pas d'édition “entreprise” à source fermée) sous le nom de NextCloud , (voir cette interview youtube avec le développeur original de OwnCloud pour plus de détails).

  • SparkleShare - utilise git pour garder les fichiers synchronisés. Selon la page d'accueil : bon pour beaucoup de petits fichiers, pas bon pour beaucoup de gros fichiers tels que la musique ou la collection de photos.

  • Seafile - Fournit un composant de 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 les ordinateurs de bureau, les tablettes et les smartphones. Un billet de blog décrivant l'installation se trouve à 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é 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, il n'est donc pas clair comment utiliser le fichier .jar fourni.

  • Rsync - rapide et efficace, il existe depuis des décennies, mais il ne conserve pas d'historique et 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 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 une visite guidée illustrative 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 computing, et l'ordinateur TonidoPlug plug.

  • BitTorrent Sync (freeware) - synchronisation de fichiers peer-to-peer basée sur BitTorrent. Je n'en sais pas beaucoup sur ce sujet car je ne l'utiliserai pas car il n'est pas open source et je ne lui fais pas confiance 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 manque actuellement certaines des fonctionnalités avancées de BitTorrent Sync, comme les pairs non fiables. Il est en cours de développement actif.

  • 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 entreprise et de disposer d'une connexion internet raisonnablement rapide.

  • Git / subversion - Utilisez directement un système de contrôle des sources. Entièrement manuel et peut être un peu complexe mais approche populaire avec certains utilisateurs familiers avec ces systèmes de les utiliser comme outils de programmation.

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

  • Montage NFS - en gros, votre maison vit sur une machine 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 exigent qu'une machine soit toujours allumée (ou du moins que vous ayez besoin de la synchroniser) pour que d'autres machines puissent se synchroniser avec elle. Il peut s'agir d'une de vos machines existantes, ou d'une machine séparée comme un NAS. Attention aux factures d'électricité qui augmentent.

  • Automatique / Manuel / Programmé - La meilleure façon d'éviter de devoir résoudre des conflits lorsque quelque chose est modifié sur plus d'une machine est d'avoir un programme sur chaque machine qui surveille les changements et se 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 souvenir de lancer la synchronisation.

  • Accès à distance - si vous voulez synchroniser loin de votre réseau local (ou de votre domicile), pensez aux implications de cette opération sur la sécurité.

  • Sécurité - vos données quittent-elles votre réseau cryptées ou non, le transfert entre machines est-il sûr ? Que se passe-t-il si quelqu'un capture vos données en déplacement et que, par la suite, le cryptage s'avère défectueux ? Qui contrôle le serveur qui conserve vos données, les données sont-elles cryptées, pouvez-vous faire confiance à des tiers ? Vous devez 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 ? Vous synchronisez-vous entre le stockage crypté et 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 comme s'il s'agissait d'un nouveau fichier, puis supprime l'ancienne copie. Veuillez aider en cochant les solutions ci-dessus qui sont capables de traiter ce problème (je pense que les solutions basées sur git le font car git ne souffre pas de ce problème en raison de l'adressage basé sur le contenu qu'il utilise, mais je n'en suis pas sûr car je ne les ai pas utilisées).

  • Capacité du disque

  • Sauvegardes - la synchronisation n'est pas une sauvegarde. Supprimez un fichier important par erreur et beaucoup des éléments ci-dessus effaceront joyeusement toutes vos autres copies. Je vous recommande de lire l'article de Mat Honan sur le piratage informatique (http://www.wired.com/gadgetlab/2012/08/apple-amazon-mat-honan-) pour avoir une bonne idée 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 tout le dossier d'origine, mais plutôt de choisir des dossiers spécifiques à synchroniser tels que Documents/, Pictures/ etc. Cela vous évitera de devoir faire face aux problèmes de vitesse, de performances et d'espace disque liés à la synchronisation automatique de tous les éléments. Cela évite également d'avoir à gérer des listes d'exclusion.

Comme je continue à essayer de trouver quelque chose qui me convient 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 seule réponse complète.

Références :

  • LinuxFormat - Février 2014 LXF180 p31, “Hosted Storage Roundup”

hacking/all/

19
19
19
2009-08-29 22:07:36 +0000

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 quelques sous-répertoires avec des éléments importants. Mais je pense à me convertir à git car il me semble que c'est 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 de git est qu'il est facile d'avoir des fichiers spécifiques à un ordinateur, puisqu'il suffit d'avoir une branche pour cet ordinateur (et dans git, vous l'obtenez par défaut). Vous n'avez donc 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 ordinateurs.

6
6
6
2009-08-29 09:43:00 +0000

Votre principal problème 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 à 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 une tâche rsync à exécuter à l'ouverture de session pour “obtenir des changements” et à la fermeture de session pour “pousser des changements” … vers un de vos ordinateurs qui serait le maître … ainsi à ce niveau de granularité, vous synchroniseriez /home/myuser à chaque fois plutôt que tout le /home. Un raffinement supplémentaire (dans le cas de personnes qui ne se déconnectent pas) serait d'exécuter le script push après une courte période d'inactivité.

Il y a beaucoup d'autres solutions possibles, mais aucune ne résout ce problème de façon magique à ma connaissance. La première étape consiste probablement à réfléchir à la façon dont vous utilisez les machines et à élaborer une politique de synchronisation adaptée au comportement de votre utilisateur.

5
5
5
2010-06-11 20:05:12 +0000

Je pense que vous pouvez mieux réaliser ce que vous voulez en mettant en place un dossier d'accueil commun à la NFS. Consultez cet article http://www.linuxjournal.com/article/4880

4
4
4
2010-06-11 21:20:04 +0000

Consultez lsyncd

Lsyncd surveille une interface de surveillance d'événements d'arborescences de répertoires locaux (inotify ou fsevents). Il agrège et combine les événements pendant quelques secondes, puis génère un (ou plusieurs) processus pour synchroniser les changements. Par défaut, il s'agit de rsync. Lsyncd est donc une solution légère de miroir en direct qui est relativement facile à installer, ne nécessite pas de nouveaux systèmes de fichiers ou périphériques de bloc et 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 sur les mouvements de fichiers et de répertoires directement sur la cible au lieu de retransmettre la destination du mouvement sur le fil.

Une personnalisation fine peut être réalisée par le biais du fichier de configuration. Les configurations d'actions personnalisées peuvent même être écrites à partir de zéro dans des couches en cascade allant des scripts shell au code écrit en langue Lua.

4
4
4
2009-08-28 18:34:44 +0000

Cela n'apportera pas une solution complète, mais cela vous donnera un point de départ :

Configurez une tâche cron de temps en temps pour rsyncrer les fichiers. J'utilise une commande comme la suivante :

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh user@10.10.0.1:/path/to/home/

Cette commande utilisera rsync pour copier uniquement les modifications nécessaires, et non pour tout recopier à chaque fois que la commande est exécutée.

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

le contenu de mon fichier rsync_backup_excludes.conf est :

dev/*
proc/*
lost+found/*
mnt/*
sys/*
2
2
2
2011-08-24 23:57:12 +0000

Montez /home d'un ordinateur aux deux autres. Automount fonctionne assez bien pour cela.

2
2
2
2009-08-28 18:41:17 +0000

Jetez un oeil à la dropbox http://www.getdropbox.com/ Cross platform Win / Linux / Mac

1
1
1
2009-08-29 11:11:32 +0000

Ubuntu One c'est peut-être ce que vous cherchez. Malheureusement, il est encore en phase bêta, et je n'ai aucune expérience en la matière, donc je ne suis pas sûr que ça marcherait pour vous.

1
1
1
2009-08-29 21:38:15 +0000

Si vous souhaitez également synchroniser les configs - les outils mentionnés ci-dessus sont totalement impuissants : les configs sont souvent modifiées, et de nombreux fichiers de log créeront des conflits afin qu'ils ne puissent pas être fusionnés.
Ma tromperie est simple, et stupide :) J'ai un poste de travail Maître, et tous les fichiers de “~” sont juste copiés sur le second “Esclave”. Au moment où je réalise que je dois modifier quelque chose, je le fais sur le poste maître, et l'esclave récupère ces changements par synchronisation.

Aussi, certains scripts bash devraient fonctionner différemment sur ces machines, donc j'ai édité mon /etc/bash.bashrc :

export OOHOST=Master

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

1
1
1
2012-03-22 11:47:19 +0000

Essayez dvcs-autosync .

Cette fonction est basée sur git, utilise XMPP pour notifier les clients connectés des changements de fichiers et réagit aux événements de changement de fichiers via les changements d'inodes. Ainsi, 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 comme remplacement de Dropbox via des clés publiques SSH et il fait vraiment le travail.

0
0
0
2011-03-02 14:02:40 +0000

Les solutions de contournement que j'envisagerais :

  • Boîte de dépôt.
    Principaux inconvénients : il n'est pas gratuit pour une quantité raisonnable de données. Sinon, il fonctionne parfaitement IMHO

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

0
0
0
2011-03-02 13:47:07 +0000

J'utilise SyncTwoFolders pour Mac et Syncback pour PC - le premier pour mes trois macs à 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 que les préréglages ont été établis. Facile à utiliser ! Je suis sûr qu'il existe d'autres versions de logiciels similaires pour Linux et Ubuntu.

0
0
0
2013-08-18 14:28:59 +0000

Vous pouvez utiliser un script de synchronisation comme 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 les dossiers locaux ou distants via ssh.