27.2. Fattori che influenzano la scelta del programma

Prima di scegliere il programma da usare, è opportuno tener conto di alcuni fattori.

27.2.1. Differenze tra l'approccio client/server e peer-to-peer

I dati vengono attualmente distribuiti con due modelli diversi. Nel primo modello, tutti i client sincronizzano i file tramite un server centrale. Quindi, il server deve essere accessibile a tutti i client, almeno occasionalmente. Questo è l'approccio usato da programmi quali Subversion, CVS e WebDAV.

L'altro metodo consiste nel permettere agli host collegati in rete di sincronizzare i dati tra di loro come peer. Questo è l'approccio utilizzato da Unison. rsync viene invece usato in modalità client, ma è comunque possibile configurare qualunque client come server.

27.2.2. Portabilità

Subversion, CVS e Unison sono disponibili in versioni per più sistemi operativi compresi Unix e Windows.

27.2.3. Modalità di funzionamento interattiva o automatica

In Subversion, CVS, WebDAV e Unison, l'operazione di sincronizzazione dei dati deve essere avviata manualmente dall'utente. Quindi, l'utente può decidere quali dati sincronizzare e gestire gli eventuali conflitti. Tuttavia, più lungo è l'intervallo tra le operazioni di sincronizzazione e maggiore è la probabilità di conflitti.

27.2.4. Conflitti: incidenza e possibili soluzioni

I conflitti sono piuttosto rari in Subversion o CVS, anche nel caso in cui più utenti stiano lavorando contemporaneamente allo stesso progetto, perché i documenti vengono uniti in base alle singole righe. Quindi, un eventuale conflitto interessa un solo client alla volta. Generalmente i conflitti di Subversion o CSV possono essere risolti in modo semplice.

Unison segnala invece i conflitti per dare modo agli utenti di escludere i file interessati al termine della sincronizzazione. Tuttavia, a differenza di Subversion o CSV, non consente di unire facilmente le modifiche.

A differenza di Subversion o CVS, che consentono di accettare parte delle modifiche in caso di conflitto, WebDAV accetta i file solo se l'operazione di modifica completa viene eseguita correttamente.

rsync non prevede alcuna funzione per la gestione dei conflitti. Quindi, è l'utente che deve fare attenzione a non sovrascrivere accidentalmente i file e risolvere manualmente i possibili conflitti. Per ulteriore sicurezza, è possibile usare anche un sistema che contempli la registrazione della cronologia delle versioni come RCS.

27.2.5. Selezione e aggiunta di file

Nella configurazione standard Unison sincronizza strutture di directory complete. I nuovi file compresi nella struttura vengono quindi automaticamente aggiunti alla sincronizzazione.

In Subversion o CVS, le nuove directory e i nuovi file devono invece essere aggiunti alla sincronizzazione rispettivamente con i comandi svn add o cvs add. Ciò permette di avere un maggior controllo sui file da sincronizzare. D'altra parte capita spesso che i nuovi file vengano ignorati, soprattutto se i punti interrogativi nell'output di svn update e svn status o cvs update vengono ignorati a causa del numero elevato di file.

27.2.6. Cronologia

Subversion e CVS dispongono di una funzione che consente di ricostruire le versioni precedenti dei file. È infatti possibile inserire un breve commento sulle modifiche dopo ciascuna modifica e rintracciare facilmente lo sviluppo dei file in base ai contenuti o ai commenti. Questa funzione è particolarmente utile per le tesi o i testi dei programmi.

27.2.7. Volume dei dati e requisiti per lo spazio su disco

Per poter archiviare tutti i dati distribuiti, è indispensabile che tutti gli host dispongano di dischi rigidi con una quantità di spazio libero sufficiente. Se si utilizza Subversion e CVS, è necessario anche prevedere anche ulteriore spazio per il database dell'archivio ubicato sul server, su cui viene salvato anche il file della cronologia, che richiede ulteriore spazio. Se si modificano file di testo, è sufficiente salvare solo le righe modificate. Per i file binari è necessario però ulteriore spazio, che è generalmente pari alle dimensioni del file modificato di volta in volta.

27.2.8. GUI

Unison offre un'interfaccia grafica che visualizza le procedure di sincronizzazione che verranno eseguite, per dare modo all'utente di accettare le impostazioni o di escludere file specifici dalla sincronizzazione. In modalità testo è possibile confermare interattivamente le singole procedure.

Gli utenti più avanti preferiscono eseguire Subversion o CVS dalla riga dei comandi. Tuttavia, esistono anche interfacce grafiche per Linux, come cervisia, e per altri sistemi operativi come wincvs. Molti strumenti per sviluppatori, come kdevelop, e gli editori di testo, come emacs, supportano CVS o Subversion. L'interfaccia grafica offre il vantaggio di consentire una risoluzione più rapida degli eventuali conflitti.

27.2.9. Facilità d'uso

Unison e rsync sono abbastanza semplici da usare e sono quindi adatti anche agli utenti inesperti. CVS e Subversion sono invece un po' più complessi, soprattutto perché gli utenti devono comprendere bene le differenze tra archivio e dati locali. Le modifiche apportate ai dati devono prima essere unite localmente nell'archivio con il comando cvs update o svn update. Quindi, i dati devono essere nuovamente reinseriti nell'archivio con il comando cvs commit o svn commit. Una volta compreso il funzionamento di questa procedura, CSV e Subversion sono abbastanza semplici da usare.

27.2.10. Protezione contro gli attacchi

Durante la trasmissione, è opportuno proteggere i dati da intercettazioni o possibili manipolazioni. Unison, CVS, rsync e Subversion possono essere usati tramite ssh, ovvero una shell protetta che garantisce un'ottima protezione contro ogni tipo di attacchi. È invece sempre preferibile evitare di eseguire CVS o Unison tramite rsh, ossia tramite una shell remota. È altrettanto sconsigliabile accedere a CVS con il meccanismo pserver su reti non protette. Subversion garantisce la protezione necessaria perché richiede l'esecuzione di Apache.

27.2.11. Protezione contro la perdita di dati

CVS è stato usato per molto tempo dagli sviluppatori per gestire progetti di programmi ed è generalmente molto stabile. La cronologia di CSV, che consente di salvare le varie versioni dei file che si stanno sviluppando, garantisce una protezione adeguata contro eventuali errori accidentali come la cancellazione di file. Benché Subversion sia meno popolare di CVS, viene attualmente usato in molti ambienti di produzione ed è stato usato anche per lo stesso progetto di Subversion.

Unison è un programma relativamente nuovo ed offre una straordinaria stabilità, ma non consente di limitare gli errori degli utenti. Se si conferma la sincronizzazione di un file eliminato, non è più possibile recuperarlo.

Tabella 27.1. Funzioni degli strumenti per la sincronizzazione dei dati: -- =Insufficiente, - = Insufficiente o non disponibile, o = Media, + = Buona, ++ = Ottima, x = Disponibile

unison

CVS/SVN

rsync

mailsync

Client/Server

Equivalente

C-S/C-S

C-S

Equivalente

Portabilità

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x

Interattività

x

x/x

x

-

Velocità

-

o/+

+

+

Conflitti

o

++/++

o

+

Selezione dei file

Dir.

Selezione dei file/delle directory

Dir.

Casella di posta

Cronologia

-

x/x

-

-

Spazio su disco

o

--

o

+

GUI

+

o/o

-

-

Difficoltà

+

o/o

+

o

Attacchi

+(ssh)

+/+(ssh)

+(ssh)

+(SSL)

Perdita di dati

+

++/++

+

+