Newsgroup: it.comp.os.linux.sys
Titolo: unison: sincronizzazione client non sempre online

E' ancora vivo questo gruppo?
 
Ho necessita' di sincronizzare, IN AUTOMATICO, un server su piu' client, 
quando essi tornano online. Una sorta di master-slave semplice: 
un master con i file, uno o piu' slave da replicare, che pero' possono non 
essere sempre online, quando tornano online, si devono sincronizzare 
in automatico e restare in sincrono per tutta la loro permanenza online.
 
Si puo' fare con unison? Eventuali alternative ?

Ciao!

Che ti pare di un semplice cronjob su tutti i clients
che lancia un rsync periodicamente?

 Si puo' fare con unison? Eventuali alternative ?
 
Si, ma anche io, se è strettamnete master/slave, io userei rsync...
 
-- 
  Mio figlio Christian diceva che la morte doveva essere qualcosa di
  bello, visto che nessuno ritornava.		(Yolande Mukagasana)

 che lancia un rsync periodicamente?
 
Non va bene, mi serve in realtime

 Si, ma anche io, se è strettamnete master/slave, io userei rsync...
 
Si nel senso che unison lo supporta? Come ?
Non posso usare rsync, mi serve una replica realtime (o prossima al realtime)
 
In pratica è un semplice cluster scalabile di webserver virtuali in cloud, 
i dati cambiano pochissimo, quindi non mi serve uno storage condiviso o 
infrastrutture ben più complesse, ma allo stesso tempo, devo poter instanziare
una o più macchine e far si che esse si sincronizzino automaticamente con
quella master (che è l'unica sempre accesa). 
 
I dati cambiano pochissimo ma a volte cambiano (ad esempio in caso di un
qualche hot-fix urgente che bypassa tutto il workflow standard per il deploy,
si prende e si pubblica via FTP l'hotfix direttamente in produzione sul server
master.
Avere una o più copie che ragionano diversamente può fare un macello.
I file sono quasi tutti PHP, comunque sia file piccolissimi, un trasferimento
richiederebbe millisecondi, per questo preferirei una sorta di realtime, nel
caso ci fosse qualche hotfix da pubblicare (i log non mi interessano)

 wrote:

Servizio attivato al boot che tenta di fare rsync e
smette la prima volta che ci riesce, quindi lo fa
periodicamente?
 
Non so che intendi per "realtime", ma da una parte o
dall'altra devi pollare: non penso che esista inotify
via TCP/IP :)

 in automatico e restare in sincrono per tutta la loro permanenza online.
 
Non ho capitose i client devono anche poter scrivere su questi file, e
quindi devi sincronizzare anche "in upload" invece che solo in download.
 
Se devi solo avere una cartella in read-only che tutti i client devono
avere sempre aggiornata, io la monterei semplicemente al boot in read-only.
 
Se devono anche poter scrivere è una bella gatta da pelare, gestire la
sincronizzazione senza che si sovrascrivano a vicenda.
 
Bye.
 

 sincronizzazione senza che si sovrascrivano a vicenda.
 
In questo caso probabilmente vuoi un database o forse
addirittura un repository git?
 
Ma secondo me è sola lettura.

 via TCP/IP :)
 
inotify non via tcp/ip ovviamente, inotify monitora variazioni ai file in locale, non appena variano, le invia ai client remoti, esattamente come
fa lsyncd o unison. 
 
Pero' cosa succede se uno di questi client non e' operativo?
Viene saltato per quel singolo 'giro' per poi diventare automaticamente
sincronizzato non appena torna online ?

 avere sempre aggiornata, io la monterei semplicemente al boot in read-only.
 
Si, solo read-only
Sono macchine diverse, probabilmente in zone diverse.
Inoltre, montando il medesimo volume, se muore il master, muoiono tutti gli slave.

 addirittura un repository git?
 
Non voglio nessuno dei due.
Devo replicare, in real-time, dei file, dal nodo A, ad uno o piu
nodi B,C,D, ... N
 
Il come farlo e' facile (unison, ad esempio) o qualunque altra cosa con inotify
tipo lsyncd. Il problema e' sapere cosa succede (non ho modo di provare a breve)
se uno dei client non dovesse essere raggiungibile. Muore il demone? se ne
sbatte e tira dritto fino al sync successivo?
 
ma nel caso se ne sbattesse, quando il client va online, posso forzare una
sincronizzazione con rsync per scaricare tutto, ma che succede se mentre
scarico con rsync, lsyncd mi cambia i file e rsync, che non ha ancora sincronizzato
tale directory, arriva dopo e sovrascrive  ?
Ricetta perfetta per avere inconsistenza

 Si puo' fare con unison? Eventuali alternative ?
 
Come alternativa, syncthing, che mi sembra proprio il suo lavoro
 
Enrico