47.2. Kriterien für die Programmauswahl

47.2.1. Client-Server versus Peer-to-Peer

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 Subversion, CVS und WebDAV verwendet. Andererseits können alle Computer gleichberechtigt (als Peers) vernetzt sein und ihre Daten gegenseitig abgleichen. Diesen Ansatz verfolgt Unison. rsync arbeitet eigentlich im Client-Server Betrieb, jedoch kann jeder Client auch wieder als Server verwendet werden.

47.2.2. Portabilität

Subversion, CVS, rsync und Unison sind auch auf vielen anderen Betriebssystemen wie anderen Unices und Windows erhältlich.

47.2.3. Interaktiv versus Automatisch

Bei Subversion, CVS, WebDAV, rsync und Unison wird der Datenabgleich manuell vom Benutzer angestoßen. Dies erlaubt die genaue Kontrolle über die abzugleichenden Dateien und einen einfachen Umgang mit Konflikten bei konkurrierenden Änderungen. Andererseits kann es leicht passieren, dass der Abgleich zu selten durchgeführt wird, wodurch sich die Chancen für einen Konflikt erhöhen.

47.2.4. Konflikte: Auftreten und Lösung

Konflikte treten bei Subversion oder 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 Subversion oder CVS einfach zu lösen.

Bei Unison bekommt man Konflikte mitgeteilt und kann die Datei einfach vom Abgleich ausnehmen. Konkurrierende Änderungen lassen sich aber nicht so einfach zusammenführen wie bei Subversion oder CVS.

Während in Subversion oder CVS im Konfliktfall Änderungen auch teilweise übernommen werden können, wird bei WebDAV ein Checkin nur dann vollzogen, wenn die gesamte Änderung erfolgreich ist.

In rsync gibt es keine Konfliktbehandlung. Der Benutzer muss selbst darauf achten, dass er nicht versehentlich Dateien überschreibt, und alle eventuell auftauchenden Konflikte von Hand lösen. Um sicher zu gehen, kann man zusätzlich ein Versionierungssystem wie RCS verwenden.

47.2.5. Dateiwahl, Dateien hinzufügen

Bei Unison und rsync werden ganze Verzeichnisbäume synchronisiert. Dort neu erscheinende Dateien werden auch automatisch in die Synchronisation mit einbezogen.

Bei Subversion oder CVS müssen neue Verzeichnisse und Dateien explizit mittels svn add bzw. 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 einer großen Anzahl von Dateien die '?' in der Ausgabe von svn update, svn status bzw. cvs update ignoriert werden.

47.2.6. Historie

Subversion und CVS bieten eine Rekonstruktion alter Dateiversionen als zusätzliches Merkmal. 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.

47.2.7. Datenmenge und Platzbedarf

Auf jedem der beteiligten Computer benötigt man für alle verteilten Daten genügend Platz auf der Festplatte. Bei Subversion bzw. CVS fällt zusätzlich der Platzbedarf für die Datenbank (dem Repository) auf dem Server an. Da dort auch die Historie 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.

47.2.8. Grafische Oberfläche

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.

Subversion bzw. 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) unterstützen CVS oder Subversion. Die Behebung von Konflikten wird mit diesen Frontends oft sehr vereinfacht.

47.2.9. Anforderungen an den Benutzer

Unison und rsync sind recht einfach zu benutzen und bieten sich auch für Anfänger an. CVS und Subversion sind etwas schwieriger zu benutzen. Man sollte zu deren 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 bzw. svn update. Nachdem dies geschehen ist, müssen die Daten mit dem Befehl cvs commit bzw. svn commit wieder in das Repository zurückgeschickt werden. Wenn man dies verinnerlicht hat, ist CVS bzw. Subversion auch für Anfänger leicht zu benutzen.

47.2.10. Sicherheit gegen Angriffe

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, rsync oder Subversion 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. Subversion bietet hier schon von Haus aus durch die Verwendung des Apache die notwendigen Sicherheitsmechanismen an.

47.2.11. Sicherheit gegen Datenverlust

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ümliches Löschen einer Datei) geschützt. Obwohl Subversion im Vergleich zu CVS noch nicht sehr weit verbreitet ist, wird es bereits im produktiven Einsatz verwendet (zum Beispiel vom Subversion-Projekt selbst).

Unison ist noch relativ neu, weist aber eine hohe Stabilität auf. Es ist jedoch empfindlicher gegen Benutzerfehler. Wenn man der Synchronisierung eines Löschvorgangs bei einer Datei einmal zustimmt, ist diese nicht mehr zu retten.

Tabelle 47.1. Merkmale der Datensynchronisationstools: -- = sehr schlecht, - = schlecht bzw. nicht vorhanden, o = mittelmäßig, + = gut, ++ = sehr gut, x = vorhanden

Unison

CVS/subv.

rsync

mailsync

Client/Server

gleich

C-S/C-S

C-S

gleich

Portabil.

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x

Interaktiv

x

x/x

x

-

Geschwind.

-

o/+

+

+

Konflikte

o

++/++

o

+

Dateiwahl

Verzeichnis

Ausw./Datei,Verz.

Verzeichnis

Mailbox

Historie

-

x/x

-

-

Plattenbed.

o

--

o

+

GUI

+

o/o

-

-

Schwierigk.

+

o/o

+

o

Angriffe

+(SSH)

+/+(SSH)

+(SSH)

+(SSL)

Datenverlust

+

++/++

+

+