Ziel
Das Programm unison dient der Synchronisation zweier Verzeichnisse, diese können dabei lokal oder im Netzwerk erreichbar sein. In diesem Szenario teilen sich ein Windows- und ein Linux-Rechner je eine Replik des Verzeichnisses. Der Synchronisationsaufruf erfolgt auf der Seite des Windows-Rechners.
Voraussetzungen
Folgende Voraussetzungen müssen erfüllt sein:
- Auf beiden Systemen läft eine identische Version des unison-Programms
- Auf dem Linuxrechner kann sich ein Benutzer mit Schreibrechten im Zielverzeichnis interaktiv anmelden
Benötigte Programme
- PuTTY zum Aufbau der SSH-Verbindung
- Plink zum Aufbau der SSH-Verbindung
- Pageant zur Vereinfachung des Verbindungsaufbaus
- PuTTYgen zur Erzeugung eines SSH-Schlüssels
- WinMerge zur Darstellung der Dateiunterschiede
Ablauf
Zuerst muss mittels PuTTYgen ein Schlüsselpaar erzeugt werden. Die Voreinstellungen können beibehalten werden, einfach auf "Generate" klicken und den Vorgang entsprechend den Bildschirmvorgaben vollziehen. Ein Passwort zum Schutz des Schlüssels ist optional, sollte aber verwendet werden. Anschließend muss der private Teil des Schlüssels auf der Festplatte abgelegt werden, z. B. als unison_win32_private_key.ppk. Der öffentliche Teil sollte ebenfalls mit abgelegt werden (z. B. als unison_win32_public_key.txt, falls er für ein späteres System ebenfalls zum Einsatz kommen soll (z. B. nach einer Neuinstallation).
Als nächstes wird dem Linuxsystem das neue Schlüsselpaar bekannt gemacht, indem der öffentliche Teil des Schlüssels in die Datei ~/.ssh/authorized_keys kopiert wird. Entweder wird dazu der Ausschnitt im PuTTYgen-Fenster kopiert oder aus der Textdatei, die den öffentlichen Schlüsselteil enthält, wird die mehrzeilige Zeichenkette als eine Zeile zusammengefügt in die genannte Datei übernommen. Vor dem eigentlichen Schlüsselteil steht die Art des Schlüssels, dahinter ein Kommentar. Die Datei kann nun so aussehen (ohne Zeilenumbrüche):
ssh-rsa AAAAB3NzaCfsdlklssFDSw AAAIEA6gfkjkgld/5439391QowfopS DGkmfnv7jnfjdjnndekjddtdc8y4ky RQLmfjMFjnrlsmlrorxmkkDEGVCsSQ Ik5jndhc879jmmg8djn4bfEwFPC963 YavfjklsdjfNXJKJF934jdsmfskfrr nmpR3ROLdxJNxTyXcq7AcqmWimc= rsa-key-20051214
Um die Verbindung zu testen, kann nun "pageant" gestartet werden. Es erscheint als kleines Icon im Tray. Im Kontextmenü (rechte Maustaste auf dem Icon) fügt man durch Aufruf von "Add Key" den geheimen Schlüssel ein, dazu wird das Passwort benötigt. Pageant sorgt nun dafür, dass alle folgenden Aufrufe von PuTTY oder Plink, die diesen Schlüssel benutzen, kein Passwort abfragen müssen.
Nun werden einige Dateien benötigt, die die Steuerung der Programmaufrufe übernehmen. Als erstes eine Profildatei für unison, die Ignorierpfade und -dateinamen können natürlich angepasst werden. Im Beispiel heißt die Datei hubble.prf. Angepasst werden müssen die Verzeichnisnamen, der Benutzername und der Servername. Achtung: Die Datei muss in einem Verzeichnis liegen, das so heißt, wie unison in der sync.cmd aufgerufen wird (hier unison)
root = e:\entwicklung\latex root = ssh://user1@servername//home/user1/daten/texte/latex sshcmd = e:\entwicklung\unison-launcher.cmd ignore = Path .svn ignore = Path */.svn ignore = Name *~ ignore = Name #*# diff = e:\programme\winmerge\winmergeu.exe
Die Datei unison-launcher.cmd kapselt den Plink-Aufruf:
@e:\entwicklung\plink.exe -ssh -2 -l user1 servername unison -server
Wichtig ist das @-Zeichen am Anfang, damit die zusätzliche Ausgabe der Kommandozeile unterdrückt wird. Die Parameter besagen, dass das SSH-Protokoll in Version 2 benutzt werden soll, es wird der Benutzer user1 angemeldet und anschließend das unison-Programm im Servermodus auf dem Fremdrechner gestartet.
Die dritte benötigte Datei enthält den Aufruf des unison-Programms selbst und heißt sync.cmd:
@ECHO OFF SET UNISON=e:\entwicklung\unison SET UNISONPROFILE=hubble @ECHO ON %UNISON% %UNISONPROFILE% pause
Abschließend erfolgt nochmal die schematische Darstellung aller Dateien im Dateisystem:
e:\ entwicklung\ pageant.exe plink.exe putty.exe puttygen.exe unison.exe unison-launcher.cmd unison_win32_private_key.ppk unison_win32_public_key.txt latex\ datei-1.tex datei-2.tex ... unison\ hubble.prf