Ich bin seit sehr vielen Jahren begeisterter Nutzer von Unison - einem Werkzeug zum Synchronisieren von Dateien und Verzeichnissen.
Warum Unison? Es ist sozusagen der Domino-Server unter den Datei-Synchronisationsprogrammen.
- Es ist verfügbar unter Windows, OS X, Linux und vielen weiteren Betriebssystemen
- Es synchronisiert Dateien über Betriebssystemgrenzen hinweg.
- echte Zwei-Wege-Synchronisierung - auf beiden Seiten dürfen Änderungen passiert sein
- Es steht unter GPL, ist also auch im geschäftlichen Umfeld kostenlos nutzbar (okay, das ist anders als bei Domino).
- Es ist wirklich extrem robust. Auch wenn die Netzwerkverbindung unterbrochen wird oder ein Rechner (natürlich wegen etwas anderem) abstürzt - ich habe noch nie erlebt, dass eine Datei deshalb beschädigt wurde.
- Es ist seit vielen Jahren stabil und praxisbewährt.
Es gibt zwei Modi:
- Unison wird auf einer Maschine aufgerufen und gleicht zwei Verzeichnisse ab, wobei diese auch auf Netzlaufwerken liegen dürfen. Aber das können ja auch viele andere.
- Spannender finde ich die zweite Möglichkeit: Unison läuft auf zwei Rechnern und jede Instanz greift lokal auf die Dateien zu. Beide Seiten führen Buch, welche Dateien schon mal abgeglichen wurden (Hashwerte von Blöcken). Bei der nächsten Synchronisation werden dann im ersten Schritt nur die lokalen Dateien durchgegangen und nachgesehen, welche Blöcke geändert wurden, bzw. welche Dateien neu dazugekommen sind oder gelöscht wurden. Dann unterhalten sich beide Server nur noch über ihre jeweiligen "Block-Änderungslisten". Und wenn sich in einer 2 GB-Datei nur ein Block geändert hat, wird auch nur der über das Netzwerk übertragen. Na, kommt das jetzt jemandem bekannt vor?
- Dabei kann auf einer Seite ständig Unison in einem Server-Modus laufen (nicht so sicher) oder
- Unison von einer Seite auf der anderen bei Bedarf per SSH gestartet werden - my way to go!
Entstanden ist das Programm aus einer Forschungsarbeit. Und ich denke, das merkt man auch. Nur dass diese Forschung ein wirklich nützliches und praktisch nutzbares Ergebnis hatte. Ist ja nicht selbstverständlich...
Bisher habe ich Unison nur zwischen meinem Notebook und anderen Notebooks und Servern genutzt, die alle unter irgendeinem Windows liefen. Heute kam ein CentOS-Server dazu.
Ich hatte schon SSH-Zugriff auf den CentOS 7-Server, authentifiziert über ein Zertifikat.
Leider gibt es kein passendes Paket mehr, das direkt über yum zu installieren wäre. Es gab wohl noch ein unter CentOS 6, aber das ist inzwischen auch schon eine aaaaalte Version. Aber zum Glück kann man unter Linux das Programm ziemlich schnell und einfach aus dem Quellcode selbst bauen.
Dazu clont man entweder das git-Archiv von GitHub: https://github.com/bcpierce00/unison oder lädt es einfach als Archiv herunter.
Ich habe mich im Wesentlichen an diese Anleitung gehalten: Install & Run & Sync Unison on CentOS 7.
Als erstes die Voraussetzungen schaffen:yum install ocaml ocaml-camlp4-devel ctags ctags-etags wget
Als nächstes das Archiv herunterladen (gegenüber der Anleitung hat sich die Version etwas erhöht):wget http://www.seas.upenn.edu/~bcp... xvfz unison-2.48.4.tar.gz
Ich habe das Verzeichnis noch umbenannt:mv src unison-2.48.4
cd unison-2.48.4
Bauen:make
Das Ergebnis noch an die "richtigen" Stellen kopieren (oder Links erstellen):cp -v unison /usr/local/sbin/
cp -v unison /usr/bin
Und das war's schon (man könnte noch aufräumen = löschen).
In der Anleitung folgt dann noch eine Beschreibung, wie man dann noch testen kann. Das lokale Testen habe ich noch gemacht, aber ansonsten hatte ich schon meine fertigen Batch-Dateien, die ich flugs an den Linux-Server angepasst habe.
Sich in die Feinheiten und die ganzen Einstellmöglichkeiten von Unison einzuarbeiten, dauert ein wenig, aber die Dokumentation ist umfangreich und - ich finde - gut geschrieben. Aus meiner Erfahrung der letzten Jahre: Für mich hat es sich wirklich, wirklich gelohnt!