Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/01/2014, à 11:31

GregPouet

Rsync : Synchro 1 serveur vers n clients et inversement...

Bonjour a tous ! (et bonne année ^^)

J'ai une petite question concernant rsync avec lequel je débute... J'ai un serveur (raspberry pi) qui contient des données que j'aimerais synchroniser avec plusieurs clients sous ubuntu... Je souhaiterais pouvoir faire en sorte que :
- si j'ajoute un fichier sur le serveur, les clients soient mis à jour
- si j'ajoute un fichier sur un client, le serveur soit mis à jour (et donc les autres clients aussi)
- si je supprime un fichier sur un client, le serveur ne soit pas mis à jour (pour éviter les suppressions par erreur)
- si je supprime un fichier sur le serveur (c'est que je suis sur de ma manip), les clients soient mis à jour.

Pour le moment, j'ai mis dans l'ordre:
1- synchro du serveur vers le client avec les options --update et --delete
2- synchro du client vers le serveur avec l'option --update

Mais ça va pas comme je veux ^^ Puisque si j'ajoute un fichier coté client, le serveur le supprime sur le client... Si j'inverse les 2 commandes, ben si je supprime un fichier du serveur, il est remis à jour par le client.......

Donc y'a t-il un moyen de faire ce que je veux ? Est ce que je m'y prend mal ? Ou est ce que je dois utiliser autre chose que rsync ?

Merci d'avance pour vos réponses wink

Hors ligne

#2 Le 01/01/2014, à 11:56

Zakhar

Re : Rsync : Synchro 1 serveur vers n clients et inversement...

Tu ne pourras jamais faire ce que tu veux sans davantage préciser.

Ce que tu décris est une situation "multi-maître", et ça ne marche pas !..

Dans une situation où tu as un/des miroirs de données, on définit un "maître" (celui qui a la "golden source") et des "esclaves" (ceux qui mettent à jour leurs données locales à partir de la "golden source").

Là, on imagine que ton "maître" c'est le serveur, mais comme tu veux pouvoir rajouter des fichiers localement... le client devient temporairement le "maître" pour ce fichier là, et à partir de ce moment ça ne va plus !..

Tu peux éventuellement t'en sortir si tu détailles mieux QUAND tu fais l'opération de miroir, mais dans tous les cas tu auras des conflits potentiels. Par exemple : création d'un fichier ayant un nom identique et un contenu différent sur 2 clients entre deux phases de Synchro. Rsync ne pourra pas te régler ça, sauf à appliquer une règle par défaut qui ne donnera peut-être pas le résultat que tu aurais souhaité.

Dernière modification par Zakhar (Le 01/01/2014, à 11:58)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 01/01/2014, à 17:48

GregPouet

Re : Rsync : Synchro 1 serveur vers n clients et inversement...

Arf dommage si j'peux pas faire ce que je veux..
Pour repondre a ta question, je fais la synchro au demarrage du client (avec @reboot de cron)
Et avec un autre outils que rsync?

Hors ligne

#4 Le 01/01/2014, à 17:56

Zakhar

Re : Rsync : Synchro 1 serveur vers n clients et inversement...

rsync ou autre outil, c'est comme si tu demandais s'il y a un moyen que 2 + 2 fasse 3 !..

La réponse est donc NON, si tu ne changes pas l'énoncé du problème : combien de clients actifs en même temps, à quel moment tu fais l'autre synchro (client => serveur) etc...

Dernière modification par Zakhar (Le 01/01/2014, à 17:57)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#5 Le 01/01/2014, à 19:06

GregPouet

Re : Rsync : Synchro 1 serveur vers n clients et inversement...

Il n'y a que 2 clients.. ils peuvent etre en marche en meme tps mais ca sera rare..
La synchro se lance au demarrage du client comme j'ai dit..
Bon apres j'veux pas refaire dropbox ou autres trucs du genre mais ca serait le principe en tres gros !

Pour le moment, le serveur verifie si le client 1 est en marche et si oui, il lance la synchro ds l'ordre que j'ai dit plus haut. Une fois terminé il verifie si le 2 eme client est en marche pis lance la synchro a nouveau..

Hors ligne

#6 Le 01/01/2014, à 21:05

Zakhar

Re : Rsync : Synchro 1 serveur vers n clients et inversement...

C'est tout à l'envers ton truc !

C'est l'esclave qui doit se synchro sur le maître, pas l'inverse. Il fait comment pour vérifier ton serveur, il fait un cron toutes les minutes ! tongue

Le fonctionnement lambda serait :
- serveur tout le temps on
- quand un client démarre il synchro
- quand le client s'arrête il synchro les modifs (sauf ce que tu ne veux pas synchro, par ex. les suppr)

Mais tu as potentiellement un problème (à cause du maitre/maitre) si le deuxième client démarre alors que le premier est démarré et qu'il fait des modifications en parallèle.

Ensuite, l'autre solution plus simple est tout bêtement de faire un montage. Ainsi tu n'as pas de problème de synchro, pas d'espace consommé en triple (1 serveur + 2 clients...) mais a contrario, pas de sauvegarde non plus.

Donc tu compenses en faisant une sauvegarde incrémentielle régulière (un cron daily) de façon à pouvoir récupérer les éventuels effacement.

Ainsi le tour est joué et c'est plus "propre" car pas de miroir à gérer.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne