claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 03/2005   »   Ausgabe bestellen

Dateien auf mehreren PCs abgleichen

Immer synchron

von Heike Jurzik


Wer Daten auf mehreren Rechnern griffbereit haben muss, kann entweder immer wieder vergleichen und von Hand einzelne Dateien und Verzeichnisse aktualisieren oder auf Unison zurückgreifen. Wir zeigen, wie Sie lokal und entfernt Daten unter Linux und Windows synchronisieren.

Mit Unison [1] halten Sie Datenbestände aktuell: Ob Sie verschiedene Verzeichnisse auf einem Linux-System vergleichen oder über die Grenzen hinaus gehen und Daten zwischen Linux und Windows abgleichen wollen -- mit wenigen Mausklicks bringt das Programm Ordnung ins Versionschaos.

Unison arbeitet entweder auf der Kommandozeile oder als komfortabler grafischer Client. Dieser Artikel beschränkt sich weitestgehend auf die Arbeit mit der grafischen Oberfläche -- nur wo es nicht anders geht, müssen Sie kurze Ausflüge auf die Kommandozeile unternehmen. Wer Unison im textbasierten Modus ausprobieren möchte, kann darüber hinaus einen Blick in das englische Benutzerhandbuch [2] werfen, das wertvolle Tipps und Tricks bietet.

Installation

Unison finden Sie bei Suse Linux 9.1 und 9.2 auf den Installationsmedien, Sie installieren das Programm wie gewohnt über YaST:

  1. Starten Sie YaST über das K-Menü / System / YaST und geben Sie auf Aufforderung das Root-Passwort ein.
  1. Gehen Sie im Bereich Software auf den Eintrag Software installieren oder löschen und geben Sie ins Suchfeld den Begriff unison ein.
  1. In der rechten Fensterhälfte taucht nun das Unison-Paket auf; versehen Sie den Eintrag mit einem Häkchen und klicken Sie auf die Schaltfläche Übernehmen. Legen Sie das richtige Installationsmedium ein; YaST spielt nun das Paket ein und aktualisiert das System.
  1. Sie starten das Synchronisierungs-Tool anschließend über das K-Menü / Dienstprogramme / Synchronisieren / unison.

Bei Mandrake Linux 10.1 ist das Programm nicht auf den Installationsmedien zu finden: über RPM-Suchmaschinen wie z. B. rpmseek [3] kommen Sie aber schnell zum richtigen Paket:

  1. Öffnen Sie die RPMseek-Homepage im Konqueror und geben Sie unison als Suchbegriff ein. Folgen Sie dem Link unison-2.9.1-7mdk.i586.rpm für Mandrake Linux 10.1.
  1. Wählen Sie einen Server in Ihrer Nähe aus. Konqueror fragt nun nach, ob Sie die Datei speichern oder mit RpmDrake öffnen möchten.

  1. Bestätigen Sie Mit "RpmDrake" öffnen, geben Sie auf Aufforderung das Root-Passwort ein und bestätigen Sie auch die folgenden Nachfragen zur Überprüfung der Abhängigkeiten. Dann spielt der Paket-Manager das Programm ein.

Benutzer von Fedora Core 2 finden ein Paket über die Suchmaschine pbone.net [4]:

  1. Gehen Sie mit dem Konqueror zur Web-Seite und geben Sie als Suchbegriff unison ein. Blättern Sie in den Ergebnissen bis zum Fedora-Core-2-Paket und folgen Sie dem Link zum Download.
  1. Eine Dialogbox fragt nach, ob Sie die Datei speichern oder mit einem selbst gewählten Programm öffnen möchten. Klicken Sie auf Öffnen mit und geben Sie in das Feld system-install-packages ein.
  1. Bestätigen Sie über Klick auf OK. Nach dem Download fragt der Paket-Manager nach dem Root-Passwort, überprüft die Abhängigkeiten und meldet, dass das RPM-Paket in der Warteschlange für die Installation steht.
  1. Bestätigen Sie durch Klicken der Schaltfläche Weiter, dann beginnt Fedora Core mit der Installation.

    Menü-Eintrag

    Sowohl bei Mandrake Linux 10.1 als auch bei Fedora Core 2 fehlt anschließend ein Eintrag im K-Menü. Um diesen hinzuzufügen, gehen Sie wie folgt vor:

    1. Klicken Sie mit der rechten Maustaste auf den Mandrake-Stern bzw. den Fedora-Hut, hinter dem sich das K-Menü verbirgt. Wählen Sie aus dem Kontextmenü Menü-Editor.
    1. Wählen Sie in der linken Baumansicht einen Bereich für den neuen Eintrag aus, z. B. Weitere Anwendungen, und klicken Sie im Menü auf den Button Neues Programm. Im aufgehenden Dialog tragen Sie den Programmnamen und den Startbefehl /usr/bin/unison für den neuen Eintrag ein.
    1. Um ein Symbol hinzuzufügen, klicken Sie auf den Button neben Symbol und wählen aus der Liste etwas Passendes aus.
    1. Abschließend klicken Sie auf die Schaltfläche Speichern in der Werkzeugleiste und beenden den Menü-Editor.

    Um Unison unter Windows zu installieren, gehen Sie von der Homepage [1] aus zum Download-Bereich. Dort finden Sie Links zu den verschiedenen Versionen. Wählen Sie Current stable version, laden Sie die Datei unison.win32-gtkui.exe herunter und verschieben Sie das Programm an einen Ort Ihrer Wahl oder legen Sie eine Verknüpfung auf dem Desktop ab.

    Lokale Verzeichnisse unter Linux vergleichen

    Für die ersten Synchronisationstestläufe legen Sie am besten zwei Testverzeichnisse an und kopieren ein paar Dateien dorthin -- wichtig ist, dass dort gleiche aber auch ein paar unterschiedliche Dateien liegen, damit Sie sehen, wie Unison arbeitet. Auf dem Testsystem haben wir zwei Verzeichnisse mp3_1 und mp3_2 angelegt und ein paar Musikdateien dorthin kopiert (Abbildung 1).

    Abb. 1: Die zwei Testverzeichnisse haben teilweise dieselben Dateien, aber auch einige Unterschiede.

    Starten Sie danach das Synchronisations-Tool über das K-Menü oder KDEs Schnellstarter ([Alt-F2] und Eingabe von unison). Das Startfenster begrüßt Sie in englischer Sprache und weist noch einmal darauf hin, dass Sie entweder zwei lokale Verzeichnisse oder einen lokalen und einen auf einem anderen Rechner liegenden Ordner vergleichen können (Abbildung 2).

    Abb. 2: Was wollen Sie tun? Unison kann lokale und entfernte Verzeichnisse synchronisieren.

    Tippen Sie für den Testlauf den Pfad zum ersten Verzeichnis in das Feld neben Dir ein oder klicken Sie auf die Schaltfläche Browse, um in einem Dateiauswahl-Dialog mit der Maus an die richtige Stelle zu navigieren. Bestätigen Sie die Auswahl per Klick auf den Button Continue. Fügen Sie im nächsten Dialog auf gleiche Weise das zweite lokale Verzeichnis hinzu.

    Unter dem Feld befinden sich mehrere Checkboxen -- für den lokalen Testlauf aktivieren Sie das Kästchen vor Local (Abbildung 3) und klicken wiederum auf Continue.

    Abb. 3: Wählen Sie die beiden Verzeichnisse aus, die Sie synchronisieren wollen.

    Den folgenden Hinweis, dass Unison keine Archivdateien findet, können Sie ignorieren und auf OK klicken. Unison beginnt jetzt damit, die Daten zu vergleichen -- das kann eine Weile dauern, wenn es sich um eine große Datenmenge handelt. Anschließend präsentiert Unison das Ergebnis übersichtlich in einer Tabelle (Abbildung 4): Die ganz linke Spalte zeigt das erste lokale Verzeichnis mp3_1, im Bereich Action finden Sie grüne Pfeile, die anzeigen, in welche Richtung Unison jeweils kopieren möchte, daneben das zweite Verzeichnis, den Status und den jeweiligen Dateinamen. Außerdem zeigt das Synchronisations-Tool an, ob es sich bei den Inhalten um Dateien (file) oder Verzeichnisse (dir) handelt.

    Abb. 4: Unisons Hauptfenster zeigt übersichtlich, was anzupassen ist.

    Unten im Fenster finden Sie genaue Informationen zu den jeweiligen Dateien. Die Angabe

    01_Welcome_To_The_Cabaret.mp3
    mp3_1  : new file           modified at 14:03 on 29 Dec, 2004  size 4706901   rw-r--r--
    mp3_2  : absent

    verrät beispielsweise, wann die Datei zuletzt geändert (modified) wurde, die genaue Größe, die Zugriffsrechte und dass sie im zweiten Verzeichnis fehlt (absent).

    Sind Sie mit allen Vorschlägen zufrieden, klicken Sie auf die Schaltfläche Go. Unison beginnt mit der Arbeit und setzt nun in die Status-Spalte grüne Häckchen, wenn eine Aufgabe erfolgreich erledigt ist. Nach getanem Werk zeigt die untere Statuszeile: Synchronization complete.

    Noch genauer auswählen

    Über Unisons Ignore-Menü können Sie gezielt Dateien vom Vergleich ausschließen. Klicken Sie zunächst mit der linken Maustaste auf die entsprechende Datei. Über das Menü legen Sie anschließend fest, dass Unison den ganzen Pfad (Permanently ignore this path), Dateien mit genau dieser Dateiendung (Permanently ignore files with this extension) oder dem Dateinamen (Permanently ignore files with this name) in diesem und natürlich auch eventuellen Unterverzeichnissen von der Bearbeitung ausschließen soll.

    Diese Einstellungen können über das Menü leider nicht wieder rückgängig gemacht werden -- eine Option, die ignorierte Dinge wieder einbindet, fehlt. Mit einem Text-Editor ist dieses Problem aber schnell gelöst, denn Unison "merkt" sich Einstellungen zu den Verzeichnissen und den Synchronisationen in so genannten Profiles. Das sind reine Textdateien, die neben den Angaben zu den beiden Verzeichnissen auch die Einstellungen, was beim Synchronisieren zu ignorieren ist, enthalten.

    Die Profildateien liegen in Ihrem Home-Verzeichnis im versteckten Ordner .unison. Standardmäßig wählt Unison beim ersten Einsatz den Profilnamen default.prf. Wenn Sie also etwas ignoriert haben und das rückgängig machen möchten, starten Sie beispielsweise den Konqueror, wählen im Menü Ansicht / Versteckte Dateien anzeigen, navigieren ins Verzeichnis .unison und klicken mit der rechten Maustaste auf die Datei default.prf. Aus dem Kontextmenü wählen Sie nun Öffnen mit und dann einen Editor Ihrer Wahl, z. B. Kate oder KWrite. In den Zeilen, die mit ignore beginnen, finden Sie die Einträge für den Pfad, die Dateiendung und den Dateinamen (Abbildung 5). Wenn Sie die entsprechenden Zeilen löschen und das Programm neu starten, ignoriert Unison diese Dinge nicht mehr.

    Abb. 5: Einträge in die Ignorierliste können Sie nur mit einem Text-Editor entfernen.

    Das richtige Profil

    Eine Übersicht über alle Profile und eine Möglichkeit, neue anzulegen, finden Sie im Menü Synchronization / Select a new profile from the profile dialog (deutsch: "Neues Profil im Profildialog wählen"; Abbildung 6). Um ein neues Profil anzulegen, klicken Sie zunächst auf die Schaltfläche Create new profile und wählen dann einen passenden Namen aus. Wer beispielsweise häufig Textdateien abgleicht, kann hier Dokumente eintragen, für das Synchronisieren von digitalen Fotos könnte hier Bilder stehen usw.

    Abb. 6: Unison fasst Einstellungen für die Synchronisation in Profilen zusammen.

    Anschließend verraten Sie dem neuen Profil noch, welche Verzeichnisse zu synchronisieren sind. Doppelklicken Sie den neuen Eintrag und wählen Sie wieder über die Schaltflächen Browse die zwei Ordner aus, die das Programm abgleichen soll. Beim nächsten Programmstart zeigt Unison nun direkt den Profiles-Dialog und bietet alle angelegten Profile zur Auswahl an.

    Alternativ können Sie das Programm auch direkt mit den Namen des gewünschten Profils aufrufen. Benutzen Sie dazu beispielsweise den KDE-Schnellstarter [Alt-F2] und geben Sie ins Fenster unison Dokumente ein. Das Programm sucht nun im versteckten Verzeichnis .unison nach einer Datei Dokumente.prf und startet direkt mit der gewünschten Ansicht.

    Lokale Verzeichnisse unter Windows abgleichen

    Auch unter Windows präsentiert Unison den schon bekannten Dialog zur Verzeichnisabfrage. Ein Klick auf Browse öffnet einen Dateiauswahldialog. Setzen Sie das erste Verzeichnis und nach dem Klick auf Continue auch das zweite. Die Funktionen unterscheiden sich nicht von denen der Linux-Version, und nach einem erfolgreichen Abgleich sollten wieder die grünen Häckchen erscheinen (Abbildung 7).

    Abb. 7: Unison nach getaner Arbeit auf dem Windows-Rechner.

    Profile und temporäre Dateien legt Unison -- abhängig von der Windows-Version -- im versteckten Verzeichnis .unison des Benutzer-Accounts oder unter C:\ ab. Im Explorer sehen Sie versteckte Ordner, indem Sie beispielsweise im Menü auf Extras / Ordneroptionen gehen. Auf dem Reiter Ansicht aktivieren Sie die Checkbox Alle Dateien und Ordner anzeigen. Die Profile-Dateien können Sie genau wie unter Linux mit einem Text-Editor bearbeiten und damit zusätzliche Eigenschaften konfigurieren.

    Daten zwischen Windows und Linux abgleichen

    Wenn Sie Unison zum Datenabgleich zwischen Linux- und Windows-Rechnern einsetzen, müssen Sie einige Dinge beachten: Zunächst ist wichtig, dass beide Unison-Installationen dieselbe Versionsnummer tragen.

    Ein weiteres Problem beim Abgleich zwischen Windows- und Linux-Systemen stellt die Groß- und Kleinschreibung von Dateinamen da. Während Linux "case sensitive" ist, also einen Unterschied zwischen datei und DATEI erkennt, kann Windows zwar auch mit Groß- und Kleinbuchstaben umgehen, ignoriert die Schreibweise aber beim Dateizugriff. Das heißt: Unter Linux kann ein Verzeichnis zwei Dateien datei und DATEI enthalten, unter Windows geht das nicht.

    Eine Möglichkeit ist natürlich, solche "Dateidoppler" vom Datenabgleich auszunehmen (siehe auch Abschnitt "Troubleshooting"); alternativ benennen Sie die Dateien vorher einfach um und achten auf die eindeutige Vergabe von Namen.

    Es gibt zwei Möglichkeiten, Daten zwischen zwei entfernten Rechnern zu synchronisieren:

    Ein Socket für alle Fälle

    Starten Sie zunächst auf der Linux-Seite Unison im Server-Modus. Dazu öffnen Sie eine Konsole ([Alt-F2] und Eingabe von konsole) und geben

    $ unison -socket 6666
    server started

    ein. Als vierstellige Socket-Nummer können Sie auch eine andere Zahlenkombination wählen -- wichtig ist nur, dass der Port noch nicht benutzt wird. Falls doch, beendet sich Unison mit einer Fehlermeldung.

    Anschließend starten Sie auf Windows-Seite Unison und erstellen ein neues Profil. Geben Sie zunächst das Verzeichnis auf dem Windows-Rechner an und klicken Sie wieder auf Continue. Im nächsten Dialog aktivieren Sie die Checkbox Socket und tragen in das Feld Host die IP-Adresse des Linux-Rechners ein. In das Feld Port gehört die vorher gewählte Socket-Nummer. Als Directory geben Sie das Verzeichnis auf dem Linux-Rechner (relativ zum eigenen Home-Verzeichnis) an, also beispielsweise Dokumente (Abbildung 8). Klicken Sie auf Continue; dann geht es weiter wie gehabt.

    Abb. 8: Unter Windows eine Verbindung zum Unison-Server auf dem Linux-Rechner aufbauen.

    Das Ganze funktioniert natürlich auch umgekehrt: Wenn Sie unter Windows ein Kommandozeilenfenster (Zubehör / Eingabeaufforderung) öffnen, in das Verzeichnis navigieren, wo das ausführbare Unison-Binary liegt, und dort

    unison -socket 6666

    eingeben, können Sie von Linux aus mit dem Client auf diesen Server zugreifen.

    Und was ist mit Backups?

    Um auf Nummer sicher zu gehen, bitten Sie Unison, ein Backup anzulegen. Dieses definieren Sie wiederum in der entsprechenden Profile-Datei im Verzeichnis .unison in Ihrem Home-Verzeichnis. Öffnen Sie die Datei mit einem Text-Editor und fügen Sie eine Leerzeile ein. An den Zeilenanfang kommt das Schlüsselwort

    backup =

    Danach definieren Sie genauer, was Unison automatisch sichern soll. Das Programm erwartet hier entweder einen Dateinamen, eine Pfadangabe oder einen regulären Ausdruck. Was kompliziert klingt, wird anhand einiger Beispiele etwas übersichtlicher. Sollen beispielsweise alle Dateien mit der Endung .doc gesichert werden, schreiben Sie:

    backup = Name *.doc

    Ebenso erwischen Sie ein ganzes Verzeichnis, wenn Sie

    backup = Name verzeichnis

    eintragen. Die Sicherungskopien landen dann später im Unterverzeichnnis .unison/backup Ihres Home-Verzeichnisses -- und zwar alle zusammen. Ältere Backups tragen dabei die Dateiendung .1.unibck, .2.unibck usw. Wer die Sicherungskopien an anderer Stelle aufbewahren möchte, muss eine entsprechende Umgebungsvariable für die Bash setzen. Starten Sie dazu eine Konsole, beispielsweise über [Alt-F2] und Eingabe von konsole. Temporär passen Sie den Backup-Ort durch Eingabe von

    export UNISONBACKUPDIR=~/neues/verzeichnis

    an, wobei die Tilde für Ihr eigenes Home-Verzeichnis steht und Sie neues/verzeichnis durch ein Verzeichnis Ihrer Wahl ersetzen. Um das Ganze dauerhaft zu verändern, bearbeiten Sie die Bash-Konfigurationsdatei ~/.bashrc in einem Text-Editor und fügen die export-Zeile dort ein. Damit die Änderungen greifen, müssen Sie sich neu anmelden.

    Standardmäßig speichert Unison bis zu zwei Sicherungskopien für jede Datei. Öffnen Sie die Profile-Datei und tragen Sie dort beispielsweise die Zeile

    maxbackups = 10

    ein, wenn Sie zehn Kopien behalten wollen.

    Troubleshooting

    Liegen zwei Dateien mit gleichem Namen aber unterschiedlichem Inhalt in den für die Synchronisation ausgewählten Verzeichnissen, ist Unison ratlos und zeigt in der Action-Spalte der Übersichtstabelle ein rotes Fragezeichen an. Praktisch: Handelt es sich um reine Textdateien, verschafft Ihnen ein Klick auf Diff einen Überblick über die Unterschiede. Unison startet dann das gleichnamige Programm und präsentiert in einem Fenster eine Ausgabe, die genauso aussieht wie die des Kommandozeilen-Tools diff (Abbildung 9) -- richtig hilfreich ist das allerdings nur, wenn Sie die Syntax von diff verstehen; Nachhilfe gibt der EasyLinux-Artikel [5]. Ein Klick auf Dismiss schließt das Fenster wieder.

    Abb. 9: Mit dem Programm "diff" zeigt Unison Unterschiede zwischen zwei Textdateien an.

    Wenn Ihnen die Ausgabe des Kommandos nicht gefällt, ändern Sie die Standardeinstellung: Soll Unison statt diff beispielsweise das grafische Programm KDiff3 aufrufen, bearbeiten Sie die entsprechende Profile-Datei im Text-Editor. Fügen Sie die Zeile

    diff = kdiff3

    hinzu, speichern Sie die Änderungen und starten Sie das Programm neu. Eventuell müssen Sie darüber hinaus KDiff3 nachinstallieren. Wie das geht, verrät auch der diff-Artikel [5]. Klicken Sie nun auf Diff, startet das Programm KDiff3 und sorgt mit seinem Syntax-Highlighting für eine besser erkennbare Darstellung der Unterschiede.

    Ebenso müssen Sie das Programm definieren, das beim Klick auf den Button Merge (englisch "zusammenführen") zum Einsatz kommt. In der Profile-Datei heißt der Parameter merge, wenn eine Backup-Datei existiert, bzw. merge2, wenn dies nicht der Fall ist. Wenn Sie KDiff3 einsetzen, können Sie sich diese Konfiguration allerdings sparen, denn dieses Tool kann ebenfalls Dateien zusammenführen.

    Konfliktlöser

    Für das Lösen von Versionskonflikten gibt es mehrere Ansätze. Am einfachsten ist sicherlich, die entsprechende Datei über einen Klick auf den Button Skip vom Synchronisieren auszuschließen. Nach einem Unskip-Button sucht man leider vergebens -- haben Sie aus Versehen eine falsche Datei markiert, hilft nur der Weg über das Menü Actions / Revert to Unison's recommendations (deutsch etwa: "Unison auf Standardeinstellungen zurücksetzen"). Dabei gehen allerdings alle selbst geänderten Einstellungen verloren.

    Über das Menü Actions können Sie weiteres Fein-Tuning vornehmen. So ändern Sie auf Wunsch die Richtung, in welche die Datei bewegt wird (Propagate this path left to right oder ... right to left), lösen alle Konflikte zugunsten des ersten (Resolve all conflicts in favor of first root) oder zweiten Verzeichnisses (... second root) oder entscheiden sich dafür, grundsätzlich neuere (Resolve all conflicts in favor of most recently modified) oder ältere Dateien (... least recently modified) zu bevorzugen. Wenn das nicht funktioniert, können Sie diese Einstellungen auch erzwingen, indem Sie aus dem Menü die entsprechende Option mit dem vorangestellten Force wählen -- hier ist jedoch Vorsicht angesagt: Diese Optionen sollten Sie nur wählen, wenn Sie sich absolut sicher sind.

    Fazit

    Unison ist ein komfortables Programm, das zuverlässig beim Abgleich von Daten hilft. Die Bedienung über das grafische Frontend ist leicht zu erlernen, und wer im englischen Benutzerhandbuch schmökern mag, findet viele gut dokumentierte Beispiele, mit denen man Unison auf der Kommandozeile noch effizienter einsetzt. Einen textbasierten Synchronisationshelfer stellen wir übrigens auch im Guru-Training ab Seite 78 vor. (hge)

    Infos
    [1] Unison-Homepage: http://www.cis.upenn.edu/~bcpierce/unison/index.html
    [2] Englisches Benutzerhandbuch für Unison: http://www.cis.upenn.edu/~bcpierce/unison/download/stable/latest/unison-manual.html
    [3] RPM-Suchmaschine rpmseek: http://rpmseek.com/
    [4] RPM-Suchmaschine RPM pbone.net: http://rpm.pbone.net/
    [5] Artikel zu diff: Heike Jurzik, "Der feine Unterschied", EasyLinux 10/2004, S. 83 ff., http://www.easylinux.de/Artikel/ausgabe/2004/10/083-guru-diff/

    Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

    Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2007-04-05 11:10

    [Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]