Bei der Entscheidung für ein Programm müssen einige wichtige Kriterien berücksichtigt werden.
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 CVS verwendet.
Die andere Möglichkeit ist, dass alle Hosts gleichberechtigt (als Peers) vernetzt sind und ihre Daten gegenseitig abgleichen. rsync arbeitet eigentlich im Client-Modus, kann jedoch auch als Server ausgeführt werden.
CVS und rsync sind auch für viele andere Betriebssysteme, wie verschiedene Unix- und Windows-Systeme, erhältlich.
In CVS 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.
Konflikte treten in 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 CVS einfach lösen.
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.
In CVS müssen neue Verzeichnisse und Dateien explizit mit dem Befehl 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 cvs update
ignoriert werden.
CVS stellt zusätzlich die Funktion der Rekonstruktion alter Dateiversionen zur Verfügung. 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.
Auf jedem der beteiligten Computer ist für alle verteilten Daten genügend Speicherplatz auf der Festplatte erforderlich. CVS benötigt zusätzlichen Speicherplatz für die Repository-Datenbank auf dem Server. Da auf dem Server auch die Datei-History 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.
Erfahrene Benutzer führen CVS in der Regel über die Kommandozeile aus. Es sind jedoch grafische Bedienoberflächen für Linux (z. B. cervisia) und andere Betriebssysteme (z. B. wincvs) verfügbar. Viele Entwicklungswerkzeuge (z. B. kdevelop) und Texteditoren (z. B. emacs) unterstützen CVS. Die Behebung von Konflikten wird mit diesen Frontends oft sehr vereinfacht.
rsync ist einfach zu verwenden und auch für Neueinsteiger geeignet. CVS ist etwas weniger bedienerfreundlich. 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. Hierzu wird der Befehl cvs update
verwendet. Anschließend müssen die Daten über den Befehl cvs commit
wieder in das Repository zurückgeschickt werden. Wenn dieser Vorgang verstanden wurde, können auch Einsteiger CVS mühelos verwenden.
Idealerweise sollten die Daten bei der Übertragung vor Abhören oder Änderungen geschützt sein. CVS und rsync lassen sich einfach über SSH (Secure Shell) benutzen und sind dann gut vor solchen Angriffen geschützt. Sie sollten CVS nicht über rsh (remote shell) ausführen. Zugriffe auf CVS mit dem Mechanismus pserver sind in ungeschützten Netzwerken ebenfalls nicht empfehlenswert.
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.
Tabelle 39.1. Funktionen der Werkzeuge zur Dateisynchronisierung: -- = sehr schlecht, - = schlecht oder nicht verfügbar, o = mittel, + = gut, ++ = hervorragend, x = verfügbar
CVS |
rsync | |
---|---|---|
Client/Server |
C-S |
C-S |
Portabilität |
Lin,Un*x,Win |
Lin,Un*x,Win |
Interaktivität |
x |
x |
Speed |
o |
+ |
Verursacht einen Konflikt |
++ |
o |
Dateiauswahl |
Auswahl/file, dir. |
Verz. |
Verlauf |
x |
- |
Speicherbedarf |
-- |
o |
GUI |
o |
- |
Schwierigkeit |
o |
+ |
Angriffe |
+ (ssh) |
+(ssh) |
Datenverlust |
++ |
+ |