[gl-como] sincronizzare la home al logout

Jio jiojio74@gmail.com
Sab 12 Apr 2008 15:12:41 CEST


>
>     A. in fase di login copi dal server sul PC
>     B. modifichi i file in locale fino a quando lavori
>     C. in fase di logoff salvi dal PC al server e buona notte
>
> In questo caso, e cioè quando tutto funziona la cosa è una favola.
> Puoi fare il backup del server ed avere la possibilità di ripristino di
> un file corrotto.
>
> Ma a questo puto iniziano le visioni pessimistiche
> mentre sei in B va giù la rete... devi spegnere ma non puoi salvare.
> allora il logon successivo in fase A sovrascrivi tutte le modifiche
> fatte mentre eri in fase B precedentemente.
> Questo si potrebbe ovviare, ma cosa succederebbe se la rete va giù
> mentre stai facendo la fase C, e quindi hai alcuni file salvati e altri
> non salvati?
> Io ti consiglio di fare uno schema di tutto il flusso che vuoi
> implementare, e poi andare a focalizzare tutti i possibili punti di
> failure. A questo punto cominci a creare lo script e a mettere tutte le
> IF per i controlli del caso. E poi ... ne parliamo
>
> La cosa è comunque interessante.. possiamo continuare a parlarne e
> vedere di arrivare ad una soluzione interessante e a prova di errori.
>
> --
> Ciao
>        Pirla
>

Ho un pò di esperienza su come funzionano i roaming profile sotto windows,
quindi penso di avere un bello schema su come far funzionare il tutto, ma mi
mancano dei dettagli su cosa fa effettivamente rsync. In particolare: rsync
durante una sincronizzazione inizia a scrivere effettivamente il file da
sincronizzare (cosa che mi risulta antipatica in quanto se si interrompe il
collegamento mi ritrovo un file danneggiato) o se usa un metodo più sicuro
ad es. preparando un file temporaneo che poi, a fine trasmissione va a
sotituire quello da aggiornare. Capire questo mi è fondamentale per decidere
se tenere due copie di ogni profilo sulla macchina locale o meno:

caso 1: rsync scrive effettivamente sul file (rischio danneggiamento in caso
di mancanza di rete):
Fase login:
1 se il server col profilo remoto non è disponibile uso il profilo locale e
creo un file che indica l'errore
2 se il server col profilo remoto ha una verione del profilo remoto
incompleta (*) uso il profilo locale ed avverto l'utente di contattare
l'admin e creo un file che indica l'errore
3.1 sincronizzo un profilo locale temporaneo con il profilo locale (profilo
temporaneo = profilo locale)
3.2 sincronizzo il profilo temporaneo con quello remoto (profilo temporaneo
= profilo remoto)
3.3 se il punto 3.2 non va a buon fine uso il profilo locale
3.4 se il punto 3.2 va a buon fine sincronizzo il profilo locale col
temporaneo (profilo locale = profilo temporaneo)
Fase logout:
1 se il server col profilo remoto non è disponibile faccio il logout
effettivo
2 creo un file di lock sul server remoto (magari col nome della macchina di
cui sto tentando la sincronizzazione)
3 se esite il file di errore faccio rsync senza l'opzione di cancellazione
(meglio che l'utente si ritrovi i file cancellati al prossimo login che
perdere un file) e cancello il file di errore
3 altrimenti sincronizzo il profilor remoto con quello locale (profilo
remoto = profilo locale)
4 se il punto 3 è andato a buon fine cancello il file di lock e faccio il
logout effettivo
5 se il punto 3 non è andato a buon fine faccio il logout effettivo

caso 2: rsync scrive sul file solo se ha finito la ricezione dal server
Fase login:
1 se il server col profilo remoto non è disponibile uso il profilo locale e
creo un file che indica l'errore
2 se il server col profilo remoto ha una verione del profilo remoto
incompleta (*) uso il profilo locale ed avverto l'utente di contattare
l'admin e creo un file che indica l'errore
3.1 sincronizzo il profilo locale con quello remoto (profilo locale =
profilo remoto)
3.2 se il punto 3.2 non va a buon fine: avverto l'utente di contattare
l'admin
Fase logout:
1 se il server col profilo remoto non è disponibile faccio il logout
effettivo
2 creo un file di lock sul server remoto (magari col nome della macchina di
cui sto tentando la sincronizzazione)
3 se esite il file di errore faccio rsync senza l'opzione di cancellazione
(meglio che l'utente si ritrovi i file cancellati al prossimo login che
perdere un file) e cancello il file di errore
3 altrimenti sincronizzo il profilor remoto con quello locale (profilo
remoto = profilo locale)
4 se il punto 3 è andato a buon fine cancello il file di lock e faccio il
logout effettivo
5 se il punto 3 non è andato a buon fine faccio il logout effettivo

(*) il controllo viene fatto verificando la presenza del file di lock che
sta ad indicare che: qualche altra macchina sta facendo il logout dallo
stesso profilo o che l'ultimo logout non è stato completato e quindi il
profilo remoto non è consistente

Volendo si aggiunge un cron sul server che va a controllare se esitono file
di lock nei profili ed avverte l'admin (ma potrebbero esserci falsi
positivi)

Credo che sia abbastanza completo tranne la situazione in cui lo stesso
utente faccia un login da una seconda macchina mentre è ancora loggato nella
prima (ma anche microzozz se ne sbatte di questo caso)
Che ne dite?
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.linux.it/pipermail/gl-como/attachments/20080412/89c0aa48/attachment.htm 


Maggiori informazioni sulla lista gl-como