27.2. Kriterien für die Auswahl eines Programms

Bei der Entscheidung für ein Programm müssen einige wichtige Kriterien berücksichtigt werden.

27.2.1. Client-Server oder Peer-to-Peer

Zur Verteilung von Daten sind zwei verschiedene Modelle verbreitet. Im ersten Modell gleichen alle Clients ihre Dateien mit einem zentralen Server ab. Der Server muss zumindest zeitweise von allen Clients erreichbar sein. Dieses Modell wird von Subversion, CVS und WebDAV verwendet.

Die andere Möglichkeit ist, dass alle Hosts gleichberechtigt (als Peers) vernetzt sind und ihre Daten gegenseitig abgleichen. Diesen Ansatz verfolgt Unison. rsync arbeitet eigentlich im Client-Modus, jedoch kann jeder Client auch als Server fungieren.

27.2.2. Portabilität

Subversion, CVS und Unison sind auch für viele andere Betriebssysteme, wie verschie­dene Unix- und Windows-Systeme, erhältlich.

27.2.3. Interaktiv oder automatisch

In Subversion, CVS, WebDAV und Unison startet der Benutzer die Datensynchronisierung manuell. Dies erlaubt die genaue Kontrolle über die abzugleichenden Dateien und einen einfachen Umgang mit Konflikten. Andererseits können sich durch zu lange Synchronisierungsintervalle die Chancen für Konflikte erhöhen.

27.2.4. Konflikte: Auftreten und Lösung

Konflikte treten bei Subversion oder CVS nur selten auf, selbst wenn mehrere Leute an einem umfangreichen Programmprojekt arbeiten. Das liegt daran, dass die Dokumente zeilenweise zusammengeführt werden. Wenn ein Konflikt auftritt, ist davon immer nur ein Client betroffen. In der Regel lassen sich Konflikte in Subversion oder CVS einfach lösen.

Unison meldet Konflikte und Sie können dann die betroffenen Dateien einfach von der Synchronisierung ausschließen. Jedoch lassen sich Änderungen 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 etwaigen Konflikte manuell lösen. Zur Sicherheit können Sie zusätzlich ein Versionierungssystem, wie RCS, verwenden.

27.2.5. Auswählen und Hinzufügen von Dateien

In seiner Standardkonfiguration synchronisiert Unison eine ganze Verzeichnisstruktur. Neue Dateien in der Struktur werden automatisch in die Synchronisierung einbezogen.

Bei Subversion oder CVS müssen neue Verzeichnisse und Dateien explizit über den Befehl svn add bzw. cvs add hinzugefügt werden. Daraus resultiert eine genauere Kontrolle über die zu synchronisierenden Dateien. Andererseits werden neue Dateien häufig übersehen, vor allem, wenn aufgrund einer großen Anzahl von Dateien die Fragezeichen in der Ausgabe von svn update und svn status oder cvs update ignoriert werden.

27.2.6. Chronik

Subversion und CVS bieten eine Rekonstruktion alter Dateiversionen als zusätzliche Funktion. Bei jeder Änderung kann ein kurzer Bearbeitungsvermerk hinzugefügt werden. Damit lässt sich später die Entwicklung der Dateien aufgrund des Inhalts und der Vermerke gut nachvollziehen. Für Diplomarbeiten und Programmtexte ist dies eine wertvolle Hilfe.

27.2.7. Datenmenge und Speicherbedarf

Auf jedem der beteiligten Computer ist für alle verteilten Daten genügend Speicherplatz auf der Festplatte erforderlich. Bei Subversion bzw. CVS fällt zusätzlich der Platzbedarf für die Repository-Datenbank auf dem Server an. Da auf dem Server auch die Datei­historie gespeichert wird, ist dort deutlich mehr Speicherplatz nötig. Bei Dateien im Textformat müssen nur geänderte Zeilen neu gespeichert werden. Bei binären Dateien wächst hingegen der Platzbedarf bei jeder Änderung um die Größe der Datei.

27.2.8. GUI

Unison bietet eine grafische Benutzeroberfläche (GUI), die anzeigt, welche Synchronisierungsvorgänge Unison ausführen möchte. Nehmen Sie den Vorschlag an oder schließen Sie einzelne Dateien aus der Synchronisierung aus. Im Textmodus bestätigen Sie die einzelnen Vorgänge interaktiv.

Erfahrene Benutzer führen Subversion bzw. CVS gewöhnlich über die Befehlszeile aus. Es gibt jedoch grafische Benutzeroberflächen für Linux (z. B. cervisia) und für andere Betriebssysteme (z. B. wincvs). Viele Entwicklungswerkzeuge (z. B. kdevelop) und Texteditoren (z. B. emacs) unterstützen CVS oder Subversion. Die Behebung von Konflikten wird mit diesen Frontends oft sehr vereinfacht.

27.2.9. Benutzerfreundlichkeit

Unison und rsync sind ziemlich einfach zu benutzen und bieten sich auch für Anfänger an. CVS und Subversion sind etwas schwieriger zu bedienen. Benutzer sollten zu deren Verwendung das Zusammenspiel zwischen Repository und lokalen Daten verstehen. Änderungen der Daten sollten zunächst immer lokal mit dem Repository zusammengeführt werden. Dies erfolgt gewöhnlich mit dem Befehl cvs update bzw. svn update. Anschließend müssen die Daten über den Befehl cvs commit bzw. svn commit wieder in das Repository zurückgeschickt werden. Wenn dieser Vorgang verstanden wurde, ist CVS bzw. Subversion auch für Anfänger leicht zu benutzen.

27.2.10. Sicherheit vor Angriffen

Idealerweise sollten die Daten bei der Übertragung vor Abhören oder Änderungen geschützt sein. Unison, CVS, rsync und Subversion lassen sich einfach über SSH (Secure Shell) benutzen und sind dann gut gegen derartige Angriffe gesichert. Es sollte vermieden werden, CVS oder Unison über rsh (Remote Shell) einzusetzen. Zugriffe auf CVS mit dem Mechanismus pserver sind in ungeschützten Netzwerken ebenfalls nicht empfehlenswert. Subversion stellt bereits durch die Verwendung von Apache die benötigten Sicherheitsmechanismen zur Verfügung.

27.2.11. Schutz vor Datenverlust

CVS wird schon sehr lange von vielen Entwicklern zur Verwaltung ihrer Programmprojekte benutzt und ist äußerst stabil. Durch das Speichern der Entwicklungsgeschichte bietet CVS sogar Schutz vor bestimmten Benutzerfehlern, wie irrtümliches Löschen einer Datei. Obwohl Subversion im Vergleich zu CVS noch nicht sehr weit verbreitet ist, wird es bereits im produktiven Einsatz verwendet (z. B. vom Subversion-Projekt selbst).

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

Tabelle 27.1. Funktionen der Werkzeuge zur Datensynchronisierung: -- = sehr schlecht, - = schlecht bzw. nicht verfügbar, o = mittelmäßig, + = gut, ++ = ausgezeichnet, x = verfügbar

Unison

CVS/SVN

rsync

mailsync

Client/Server

gleich

C-S/C-S

C-S

gleich

Portabilität

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x

Interaktivität

x

x/x

x

-

Geschwindigkeit

-

o/+

+

+

Konflikte

o

++/++

o

+

Dateiauswahl

Verz.

Ausw./Datei, Verz.

Verz.

Mailbox

Chronik

-

x/x

-

-

Speicherbedarf

o

--

o

+

GUI

+

o/o

-

-

Schwierigkeit

+

o/o

+

o

Angriffe

+(ssh)

+/+(ssh)

+(ssh)

+(SSL)

Datenverlust

+

++/++

+

+