Kapitel 47. Datei-Synchronisation

Inhaltsverzeichnis

47.1. Software zur Datensynchronisation
47.2. Kriterien für die Programmauswahl
47.3. Einführung in Unison
47.4. Einführung in CVS
47.5. Einführung in Subversion
47.6. Einführung in rsync
47.7. Einführung in mailsync

Zusammenfassung

Viele Menschen benutzen heutzutage mehrere Computer. Ein Computer zu Hause, ein oder mehrere Rechner am Arbeitsplatz und eventuell noch einen Laptop oder PDA für unterwegs. Viele Dateien benötigt man auf allen Computern und möchte sie auch bearbeiten. Dennoch sollen alle Daten überall in aktueller Version zur Verfügung stehen.

47.1. Software zur Datensynchronisation

Auf Computern, die ständig miteinander über ein schnelles Netzwerk in Verbindung stehen, ist die Datensynchronisation kein Problem. Man wählt ein Netzwerkdateisystem, wie zum Beispiel NFS, und speichert die Dateien auf einem Server. Alle Rechner greifen dabei über das Netzwerk auf ein und dieselben Daten zu. Dieser Ansatz ist unmöglich, wenn die Netzverbindung schlecht oder teilweise gar nicht vorhanden ist. Wer mit einem Laptop unterwegs ist, ist darauf angewiesen, von allen benötigten Dateien Kopien auf der lokalen Festplatte zu haben. Wenn Dateien bearbeitet werden, stellt sich aber schnell das Problem der Synchronisierung. Wird auf einem Computer eine Datei verändert, muss die Kopie der Datei auf allen anderen Rechnern aktualisiert werden. Dies kann bei seltenen Kopiervorgängen manuell mit Hilfe von scp oder rsync erledigt werden. Bei vielen Dateien wird das jedoch schnell aufwändig und erfordert hohe Aufmerksamkeit vom Benutzer, um Fehler, wie zum Beispiel das Überschreiben einer neuen mit einer alten Datei, zu vermeiden.

[Warning]Datenverlust droht

Man sollte sich in jedem Fall mit dem verwendeten Programm vertraut machen und seine Funktion testen, bevor man Daten über ein Synchronisationssystem verwaltet. Für wichtige Dateien ist ein Backup unerlässlich.

Zur Vermeidung der zeitraubenden und fehlerträchtigen Handarbeit bei der Datensynchronisation gibt es Software, die diese Arbeit mit verschiedenen Ansätzen automatisiert. Die folgenden Kurzeinführungen sollen dem Nutzer eine Vorstellung davon liefern, wie diese Programme funktionieren und genutzt werden können. Vor dem tatsächlichen Einsatz empfehlen wir, die Programmdokumentation sorgfältig zu lesen.

47.1.1. Unison

Bei Unison handelt es sich nicht um ein Netzwerkdateisystem. Stattdessen werden Dateien ganz normal lokal gespeichert und bearbeitet. Von Hand kann das Programm Unison aufgerufen werden, um Dateien zu synchronisieren. Beim ersten Abgleich wird auf den beteiligten zwei Computern eine Datenbank angelegt, in der Prüfsummen, Zeitstempel und Berechtigungen der ausgewählten Dateien gespeichert sind. Beim nächsten Aufruf kann Unison erkennen, welche Dateien verändert wurden und die Übertragung vom oder zum anderen Rechner vorschlagen. Im besten Fall kann man alle Vorschläge annehmen.

47.1.2. CVS

Meist zur Versionsverwaltung von Quelltexten von Programmen benutzt bietet CVS die Möglichkeit, Kopien der Dateien auf mehreren Computern zu haben. Damit eignet es sich auch für unseren Zweck. Bei CVS gibt es eine zentrale Datenbank (repository) auf dem Server, welche nicht nur die Dateien, sondern auch die Veränderungen an ihnen abspeichert. Veränderungen, die man lokal durchführt, werden in die Datenbank eingecheckt (commit) und können von anderen Computern wieder abgeholt werden (update). Beides muss vom Benutzer initiiert werden.

Dabei ist CVS bei gleichzeitigen Veränderungen einer Datei auf mehreren Computern sehr fehlertolerant: Die Veränderungen werden zusammengeführt und nur, wenn in gleichen Zeilen Veränderungen stattfanden, gibt es einen Konflikt. Die Datenbank bleibt im Konfliktfall in einem konsistenten Zustand und der Konflikt ist nur auf dem Client Computer sichtbar und zu lösen.

47.1.3. Subversion

Im Gegensatz zu CVS, das im Laufe der Zeit wachsenden Anforderungen immer wieder angepasst wurde, ist Subversion ein durchgängig konzipiertes Projekt; Subversion wurde entwickelt, um CVS abzulösen und dessen technische Grenzen zu überwinden.

Subversion wurde in vielen Bereichen zu seinem Vorgänger deutlich verbessert. CVS verwaltet aufgrund seiner Geschichte nur Dateien und „weiß“ nichts von Verzeichnissen. In Subversion dagegen, besitzen auch Verzeichnisse eine Versionshistorie und können genauso wie Dateien kopiert und umbenannt werden. Des Weiteren können zu jeder Datei und zu jedem Verzeichnis Metadateien hinzugefügt werden, die ebenfalls der Versionsverwaltung unterliegen. Im Gegensatz zu CVS bietet Subversion transparenten Netzwerkzugriff über einige Protokolle wie zum Beispiel WebDAV (Web-based Distributed Authoring and Versioning). WebDAV erweitert das HTTP-Protokoll für verteiltes Arbeiten an Dateien auf einem entfernten Webserver.

Zur Realisierung von Subversion wurde weitgehend auf existierende Programmpakete zurückgegriffen. So wird zum Betrieb von Subversion immer auch der Webserver Apache mit der Erweiterung WebDAV verwendet.

47.1.4. mailsync

Im Vergleich zu den bisher erwähnten Synchronisationswerkzeugen dient mailsync einzig und allein der Synchronisation von E-Mails zwischen verschiedenen Mailboxen. Es kann sich sowohl um lokale Mailbox-Dateien als auch um Mailboxen handeln, die auf einem IMAP-Server untergebracht sind.

Dabei wird für jede Nachricht aufgrund der im E-Mail-Header enthaltenen Message-ID einzeln entschieden, ob sie synchronisiert bzw. gelöscht werden muss. Es ist sowohl die Synchronisation zwischen einzelnen Mailboxen, als auch zwischen Hierarchien von Mailboxen möglich.

47.1.5. rsync

Wenn Sie keine Versionskontrolle benötigen, und große Dateibäume über langsame Netzwerkverbindungen synchronisieren möchten, bietet sich das Tool rsync an. rsync verfügt über ausgefeilte Mechanismen, um ausschließlich Änderungen an Dateien zu übertragen. Dies betrifft nicht nur Textdateien sondern auch binäre Dateien. Um die Unterschiede zwischen Dateien zu erkennen, teilt rsync die Dateien in Blöcke auf, und berechnet Prüfsummen zu diesen Blöcken.

Der Aufwand, der zum Erkennen der Änderungen betrieben wird hat auch seinen Preis. Zum Betrieb von rsync sollte man die Rechner, die synchronisiert werden sollen, großzügig dimensionieren. Vor allem am RAM sollte nicht gespart werden.