Zur Verteilung von Daten sind zwei verschiedene Modelle verbreitet. Einerseits kann man einen zentralen Server verwenden, mit dem alle anderen Computer (sog. Clients) ihre Dateien abgleichen. Der Server muss dann zumindest zeitweise über ein Netzwerk von allen Clients erreichbar sein. Dieses Modell wird von CVS und InterMezzo verwendet. Andererseits können alle Computer gleichberechtigt vernetzt sein und ihre Daten gegenseitig abgleichen. Diesen Ansatz verfolgt unison.
Bei InterMezzo handelt es sich um eine Lösung, die momentan lediglich auf Linux-Systemen funktioniert. In der Vergangenheit war sie sogar auf Architekturen mit 32bit little-endian (ix86) beschränkt. Mit dem Umstieg vom perl-basierten lento auf InterSync ist diese Beschränkung aber mittlerweile aufgehoben. Dennoch ist beim Abgleich zwischen verschiedenen Architekturen Vorsicht angezeigt, da dies ein wenig getestetes Feature ist. CVS und unison sind auch auf vielen anderen Betriebssystemen wie anderen Unices und Windows erhältlich.
Bei InterMezzo erfolgt der Datenabgleich normalerweise automatisch im Hintergrund, sobald die Netzwerkverbindung zum Server hergestellt werden kann. Lediglich wenn Konflikte auftreten, muss eingegriffen werden.
Bei CVS und unison wird der Datenabgleich manuell vom Benutzer angestoßen. Dies erlaubt die genauere Kontrolle über die abzugleichenden Dateien und einen einfacheren Umgang mit Konflikten. Andererseits kann es leicht passieren, dass der Abgleich zu selten durchgeführt wird, wodurch sich die Chancen auf einen Konflikt erhöhen.
unison und CVS erscheinen aufgrund ihres interaktiven Charakters langsamer als InterMezzo, welches im Hintergrund arbeitet. CVS ist im Allgemeinen etwas schneller als unison.
Konflikte treten bei CVS nur selten auf, selbst wenn mehrere Leute an einem großen Programmprojekt arbeiten. Die Dokumente werden hier zeilenweise zusammengeführt. Wenn ein Konflikt auftritt, dann ist davon immer nur ein Client betroffen. In der Regel sind Konflikte mit CVS einfach zu lösen. Bei unison bekommt man Konflikte mitgeteilt und kann die Datei einfach vom Abgleich ausnehmen. Änderungen lassen sich aber nicht so einfach zusammenführen wie bei CVS.
Aufgrund des nicht-interaktiven Charakters von InterMezzo lassen sich Konflikte nicht einfach interaktiv lösen. Wenn Konflikte auftreten, bricht InterSync mit einer Warnung ab. Der Systemadministrator muss in diesem Fall eingreifen und ggf. Dateien von Hand (rsync/scp) übertragen, um wieder einen konsistenten Zustand herzustellen.
Bei InterMezzo wird ein ganzes Dateisystem synchronisiert. Neu hinzugekommene Dateien innerhalb des Dateisystems erscheinen automatisch auch auf den anderen Computern.
Bei unison wird in der einfachsten Konfiguration ein ganzer Verzeichnisbaum synchronisiert. Dort neu erscheinende Dateien werden auch automatisch in die Synchronisation mit einbezogen.
Bei CVS müssen neue Verzeichnisse und Dateien explizit mittels cvs add hinzugefügt werden. Daraus resultiert eine genauere Kontrolle über die zu synchronisierenden Dateien. Andererseits werden neue Dateien gerne vergessen, vor allem, wenn aufgrund der Anzahl der Dateien die '?' in der Ausgabe von cvs update ignoriert werden.
CVS bietet eine Rekonstruktion alter Dateiversionen als zusätzliches Feature. Bei jeder Veränderung kann man einen kurzen Bearbeitungsvermerk hinzufügen und später die Entwicklung der Dateien aufgrund des Inhalts und der Vermerke gut nachvollziehen. Für Diplomarbeiten und Programmtexte ist dies eine wertvolle Hilfe.
Auf jedem der beteiligten Computer benötigt man für alle verteilten Daten genügend Platz auf der Festplatte. Bei CVS fällt zusätzlich der Platzbedarf für die Datenbank (dem repository) auf dem Server an. Da dort auch die Geschichte der Dateien gespeichert wird, ist dieser deutlich größer als der reine Platzbedarf. Bei Dateien im Textformat hält sich dies in Grenzen, da nur geänderte Zeilen neu gespeichert werden müssen. Bei binären Dateien wächst hingegen der Platzbedarf bei jeder Änderung um die Größe der Datei.
unison kommt mit einer grafischen Oberfläche, die anzeigt, welche Abgleiche unison vornehmen möchte. Man kann den Vorschlag annehmen oder einzelne Dateien vom Abgleich ausnehmen. Daneben kann man auch im Textmodus interaktiv die einzelnen Vorgänge bestätigen.
CVS wird von erfahrenen Benutzern normalerweise an der Kommandozeile benutzt. Es gibt jedoch grafische Oberflächen für Linux (cervisia, …) und auch für Windows (wincvs). Viele Entwicklungstools (zum Beispiel kdevelop) und Texteditoren (zum Beispiel emacs) haben eine Unterstützung für CVS. Die Behebung von Konflikten wird mit diesen Frontends oft sehr vereinfacht.
So viel Komfort bietet InterMezzo nicht. Andererseits erfordert es ja normalerweise keine Interaktion und sollte – einmal eingerichtet – einfach nur im Hintergrund seinen Dienst tun.
Die Einrichtung von InterMezzo ist relativ schwierig und sollte nur von einem Systemverwalter mit etwas Erfahrung im Linux-Bereich vorgenommen werden. Zur Einrichtung sind root-Rechte nötig. unison ist recht einfach zu benutzen und bietet sich auch für Anfänger an.
CVS ist etwas schwieriger zu benutzen. Man sollte zu dessen Verwendung das Zusammenspiel zwischen Repository, und lokalen Daten verstanden haben. Veränderungen an den Daten sollten zunächst immer lokal mit dem Repository zusammengeführt werden. Hierzu dient der Befehl cvs update. Nachdem dies geschehen ist, müssen die Daten mit dem Befehl cvs commit wieder in das Repository zurückgeschickt werden. Wenn man dies verinnerlicht hat, ist CVS auch für Anfänger leicht zu benutzen.
Die Sicherheit bei der Übertragung der Daten gegenüber Abhören oder gar Verändern der Daten sollte idealerweise gewährleistet werden.
Sowohl unison als auch CVS lassen sich einfach über ssh (Secure Shell) benutzen und sind dann gut gegen obige Angriffe gesichert. Es sollte vermieden werden, CVS oder unison über rsh (Remote Shell) einzusetzen und auch Zugriffe über den CVS pserver Mechanismus sind in ungeschützten Netzwerken nicht empfehlenswert.
Bei InterMezzo erfolgt der Datenabgleich über http. Dieses Protokoll kann leicht abgehört oder verfälscht werden. Zur erhöhung der Sicherheit ist der Einsatz von SSL vorgesehen, derzeit ist dieses Feature aber noch nicht benutzbar.
CVS wird schon sehr lange von vielen Entwicklern zur Verwaltung ihrer Programmprojekte benutzt und ist ausgesprochen stabil. Durch das Speichern der Entwicklungsgeschichte ist man bei CVS sogar gegen gewisse Benutzerfehler (zum Beispiel irrtümlichen Löschen einer Datei) geschützt.
unison ist noch relativ neu, aber weist eine hohe Stabilität auf. Es ist empfindlicher gegen Benutzerfehler. Wenn man der Synchronisierung eines Löschvorgangs bei einer Datei einmal zustimmt, ist diese nicht mehr zu retten.
InterMezzo sollte gegenwärtig noch als experimentell gelten. Da die Dateien in einem darunter liegenden Dateisystem gespeichert werden, ist die Wahrscheinlichkeit eines größeren Datenverlustes relativ gering. Aber der Datenabgleich selbst kann prinzipiell schief gehen und zerstörte Dateien hinterlassen. Auch bei Benutzerfehlern ist die Toleranz gering: Das lokale Löschen einer Datei wird auf allen anderen synchronisierten Computern einfach nachvollzogen. Insofern sind Backups sehr ratsam.
Tabelle 16.1. Features der Datensynchronisationstools -- = sehr schlecht, - = schlecht bzw. nicht vorhanden, o = mittelmäßig, + = gut, ++ = sehr gut, x = vorhanden
| InterMezzo | unison | CVS | mailsync | |
| CS/Gleich | C-S | gleich | C-S | gleich |
| Portabil. | Linux(i386) | Lin,Un*x,Win | Lin,Un*x,Win | Lin,Un*x |
| Interaktiv | - | x | x | - |
| Geschwind. | ++ | - | o | + |
| Konflikte | - | o | ++ | + |
| Dateiwahl | Dateisystem | Verzeichnis | Auswahl | Mailbox |
| Geschichte | - | - | x | - |
| Plattenbed. | o | o | -- | + |
| GUI | - | + | o | - |
| Schwierigk. | - | + | o | o |
| Angriffe | - | +(ssh) | +(ssh) | +(SSL) |
| Datenverlust | o | + | ++ | + |