Per la sincronizzazione dei dati si sono diffusi due modelli. Nel primo caso vi è un server centrale in base al quale i client sincronizzano i loro file. I client dovranno potersi collegare via rete almeno temporaneamente al server. Questo modello è quello utilizzato da subversion, CVS e WebDAV
L'alternativa è rappresentata da computer "equiparati" che sincronizzano i loro dati a vicenda. Questo è l'approccio che segue unison. rsync segue l'approccio client-server, comunque ogni client può fungere a sua volta da server.
Subversion, CVS, e unison sono disponibili per tutta una serie di sistemi operativi tra cui UNIX e Windows.
Con subversion, CVS WebDAV, e unison la sincronizzazione viene inizializzata manualmente dall'utente. Il vantaggio è che si ha maggior controllo sul processo di sincronizzazione ed è più facile risolvere dei conflitti. Dall'altra parte, se la sincronizzazione viene effettuata troppo di rado aumentano le probabilità che si verifichi un conflitto.
In subversion o CVS i conflitti si verificano solo raramente anche se sono diverse persone a lavorare ad un grande progetto. I documenti vengono costruiti riga dopo riga. Quando si verifica un conflitto, spesso ciò riguarda solo un client. Generalmente, nel caso di subversion o CVS i conflitti sono semplici da risolvere.
Unison comunica il verificarsi di conflitti e si potranno escludere i file imputati dal processo di sincronizzazione. Tuttavia non è così semplice allineare le modifiche come nel caso di subversion o CVS.
Mentre con subversion o CVS quando si verifica un conflitto, le modifiche possono essere assunte anche parzialmente, nel caso di WebDAV un check-in può essere eseguito solo se il processo di modifica nel suo intero non ha prodotto dei conflitti.
rsync non presenta delle funzionalità per trattare ed eliminare eventuali dei conflitti. L'utente dovrà fare attenzione a non sovrascrivere per errore dei file e risolvere manualmente i conflitti che affioriranno. Per andare sul sicuro, si potrà ricorrere ad applicazioni di versionamento come RCS.
Unison sincronizza interi alberi di directory. I file che si aggiungono all'albero vengono inclusi automaticamente nel processo di sincronizzazione.
In subversion o CVS bisogna aggiungere esplicitamente nuovi file e
directory tramite il comando
svn add o
cvs add.
In tal modo si ha un maggior controllo sui file da sincronizzare.
Dall'altra parte spesso si dimenticano i nuovi file, soprattutto se
nell'output di
svn update,
svn status o
cvs update
si ignorano i '?' (punti interrogativi) a causa della mole dei file.
Subversion o CVS permettono inoltre di ricostruire versioni precedenti di un file. Ad ogni modifica potrete aggiungere un breve commento per poter meglio seguire e rintracciare le varie modifiche apportate al file in passato. Questa funzionalità si rivela di particolare utilità nella stesura di tesi o di sorgenti.
Su ogni computer interessato serve spazio a sufficienza per i dati dislocati. Per subversion o cvs serve inoltre dello spazio aggiuntivo per la banca dati (il cosiddetto repository) sul server. Visto che sul server viene memorizzato anche lo storico dei dati è necessario ulteriore spazio. Nel caso di file di testo, il fabbisogno non è eccessivo anche perché vengono memorizzate solo le righe modificate; mentre per file binari ad ogni modifica il fabbisogno cresce nella misura del volume del file.
Unison dispone di una interfaccia grafica che indica cosa il programma intende sincronizzare. Si può accettare la proposta o escludere singoli file dalla sincronizzazione. Inoltre è possibile confermare in modo interattivo i singoli processi nel modo testo.
Gli utente più esperti impiegano CVS di solito servendosi della riga di comando. Comunque vi sono anche interfacce grafiche per Linux (cervisia…) ed anche per Windows (wincvs). Tanti tool di sviluppo (p.es. kdevelop) ed editor di testo (p.es. emacs) supportano CVS o subversion. Grazie a questi front-end risolvere dei conflitti diventa davvero semplice.
unison e rsync sono semplici da utilizzare ed indicati anche per
principianti. CVS o subversion sono già un po' più complessi nel loro
utilizzo. Per un eventuale impiego si dovrebbe aver afferrato il modo di
interagire tra il repository e i dati in locale. In locale si dovrebbe
innazitutto avere comunque la versione aggiornata dei file, questo si
ottiene con il comando cvs
update o svn update.
Dopo aver eseguito questo comando, con il comando cvs
commit o svn commit
i dati vanno rispediti nel repository. Se si segue sempre questa procedura
CVS o subversion
risultano essere semplici da utilizzare anche per principianti.
La protezione contro l'intercettazione o addirittura la manipolazione dei dati durante il loro trasferimento dovrebbe essere sempre data. Sia per unison che CVS, rsync o subversion si può ricorrere a ssh (Secure Shell) per mettersi al riparo da eventuali attacchi. Evitate di utilizzare rsh (remote shell) con CVS o unison e anche gli accessi tramite il meccanismo pserver del CVS non sono consigliabili in rete non protette. subversion è per questi casi già più indicato, visto che offre i necessari meccanismi di sicurezza tramite l'utilizzo di Apache.
CVS viene utilizzato da già tempo da tanti sviluppatori per amministrare i propri progetti ed è estremamente stabile. Grazie allo storico, con CVS si è anche al riparo di determinati errori causati da disattenzioni dell'utente (p.es. cancellare per errore un file). Anche se subversion non gode della diffusione di CVS, viene già utilizzato in modo produttivo (si veda l'esempio dello stesso progetto subversion).
Unison è un prodotto relativamente recente ma è già molto stabile. L'utente dovrà fare molta attenzione per evitare degli errori: se ad esempio accetta di cancellare un file durante il processo di sincronizzazione, il file risulterà irrecuperabile.
Tabella 47.1. Feature dei tool di sincronizzazione -- = molto scarso, - = scarso o non disponibile, o = mediocre, + = buono, ++ = molto buono, x = disponibile
|
unison |
CVS/subv. |
rsync |
mailsync | |
|---|---|---|---|---|
|
Client/Server |
uguale |
C-S/C-S |
C-S |
uguale |
|
Portabil. |
Lin,Un*x,Win |
Lin,Un*x,Win |
Lin,Un*x,Win |
Lin,Un*x |
|
Interattivo |
x |
x/x |
x |
- |
|
Velocità |
- |
o/+ |
+ |
+ |
|
Conflitti |
o |
++/++ |
o |
+ |
|
Selez. file |
Directory |
Selez./file,direct. |
Directory |
Mail box |
|
Storico |
- |
x/x |
- |
- |
|
Spazio dis. |
o |
-- |
o |
+ |
|
GUI |
+ |
o/o |
- |
- |
|
Difficoltà |
+ |
o/o |
+ |
o |
|
Attacchi |
+(ssh) |
+/+(ssh) |
+(ssh) |
+(SSL) |
|
Perdita di dati |
+ |
++/++ |
+ |
+ |