Die Tooltipps Extended von Linux-Magazin Online erweitern eines der im Linux-Magazin unter “Tooltipps” vorgestellten Softwaretools um Hintergrundinformationen zum Projektstatus und zum Hauptentwickler. Heute: Der gute Sync-Geist Lsyncd.
Steckbrief:
|
Zweck: |
Einfache Live-Mirroring-Lösung |
|
Lizenz: |
GPLv2 |
|
Alternativen: |
Pylsincd |
|
Getestet: |
Version 2.0.0 in den Tooltipps des Linux-Magazins 03/2011 |
|
Derzeit aktuelle Version: |
2.0.2 vom 20. Januar 2011 (Download) |
|
Webseite: |
Bewertung: -****
Dank Lsyncd gleichen Benutzer zwei Systeme ohne großen Aufwand in regelmäßigen Abständen und vollautomatisch ab. (Uwe Vollbracht)
Beschreibung:
Eine zeitnahe, interaktive Datenspiegelung zwischen zwei Rechnern ist das Spezialgebiet von HA-Cluster-Lösungen wie DRDB & Co. Wem das zu aufwändig ist, der greift zu Lsyncd. Der Live Syncing (Mirror) Daemon eignet sich besonders für Systeme mit geringem Synchronisationsverkehr. Um das Netzwerk nicht unnötig mit vielen einzelnen Verbindungen zu belasten, sammelt Lsyncd erst Informationen zu geänderten Daten, bevor es in Aktion tritt. Wie oft das passiert, bestimmt der Anwender in der Einrichtungsdatei.
Für den eigentlichen Abgleich setzt Lsyncd auf Rsync. Auf Wunsch definiert der Nutzer aber eine andere Methode. Das Wiki der Projekt-Webseite bietet hierzu zahlreiche Konfigurationsbeispiele und Anregungen für den Einsatz.
Die Einrichtungsdateien sind in der Skriptsprache Lua geschrieben. Der Anwender übergibt sie beim Aufruf als Parameter. In der Voreinstellung läuft Lsyncd als Daemon im Hintergrund und protokolliert mit Hilfe von Syslog. Zu Testzwecken ist es aber möglich, das Tool im Vordergrund zu starten und die Meldungen auf der Standardausgabe zu betrachten. (Uwe Vollbracht)
Hintergrund:
|
Vor zwei Jahren stand ein Techniker an der Universität Wien vor folgendem Problem: Axel Kittenberger wollte Verzeichnisse mit einem Webserver hinter einer Firewall synchron halten. Die bestehenden Synchronisationslösungen waren, wie sich der Nachrichtentechniker gegenüber der Redaktion ausdrückt, “eindeutig ‘Overkill'” und vertrugen sich mit der Firewall nicht. Ein Cronjob hätte aber Ressourcen vergeudet. Nach der erfolglosen Suche nach einer Lösung mit Inotify hat er kurzerhand Lsyncd 1.0 geschrieben. “Im Open-Source-Gedanken bastelte ich noch ein Paket herum und stellte es online”, berichtet er. In der weiteren Entwicklung versuchte Kittenberger, auf diverse Wünsche und Verbesserungsvorschläge einzugehen. “Zugegeben, ein erfahrener Programmier kann sowas wie damals Lsyncd 1.0 auch in ein bis zwei Tagen nachprogrammieren”, sagt der Soziologie-Doktorand heute. “Bis es aber die Möglichkeiten und Erfahrung von 2.0 hat, ist es wohl ein deutlich längerer Weg”, setzt er nicht ohne Stolz hinzu. Heute hält Lsyncd die www-Verzeichnisse seiner Benutzer vom Fileserver mit dem Webserver synchron. Eine Lieblingsprogrammiersprache hat der aus Mödling bei Wien stammende 33-Jährige nicht: “Ich bin da im Laufe der Jahre emotionslos geworden. Je nach Aufgabenstellung wähle ich die Sprache, deren jeweiligen Stärken und Schwächen am besten dazu passen.” Entsprechend hat es auch pragmatische Gründe, dass große Teile von Lsyncd ab Version 2.0 in Lua geschrieben sind und nicht mehr in C. Im Lsyncd-Manual lässt er daran kleinen Zweifel: “Ich habe es nicht anderen Skriptsprachen vorgezogen, weil es das Tollste unter der Sonne ist, sondern weil es einfach das passende Tool für die anstehende Aufgabe ist.” Lua habe er vorher noch gar nicht gekannt, überzeugt hätte ihn unter anderem die Eigenschaft, dass Lua als Helfer für C-Konfigurationsdateien entstanden sei. Lua ist seit 1993 im Umlauf. Ihre derzeitige Version 5.1 ist bereits fünf Jahre alt (auf Linux-Magazin Online gibt es einen frei verfügbaren Artikel zu Lua), seit Ende 2010 sind Testversionen von Lua 5.2 in Arbeit. |
Fünf Fragen an Axel Kittenberger, Erfinder und Maintainer von Lsyncd:
Linux-Magazin Online: Wann und wo hast Du das Lsyncd-Projekt gegründet?
Axel Kittenberger: August 2008 in Wien.
Linux-Magazin Online: Wer arbeitet noch daran mit?
Axel Kittenberger: Bei der ständigen Pflege von Lsyncd bin ich alleine. Gelegentlich freue ich mich über Patches, Hilfe bei der Dokumentation, weiteren Beispielen oder bei verschränkten Projekte, wie zum Beispiel einem GUI-Frontend, das sich in der Entwicklung befindet.
Linux-Magazin Online: Wie soll es weitergehen – hast Du bestimmte Ziele oder Ambitionen?
Axel Kittenberger: Im Prinzip ist Lsyncd ist fertig. Aber das dachte ich vor einigen Versionen auch schon. Es sind die BenutzerInnen die neue Ideen und Wünsche einbringen, entweder gleich mit Code oder mit überzeugenden Argumenten falls ich Zeit dazu finde, sie umzusetzen. Ich werde immer wieder gefragt, warum Lsyncd nicht auch Fanotify unterstützt. Ich habe es probiert, aber die gegenwärtige Implementation im Linuxkernel ist für Lsyncd ungenügend, es berichtet keine Rename-Events.
Linux-Magazin Online: Wenn jemand Lsyncd nützlich findet, wird er auch mögen …
Axel Kittenberger: DRDB und GlusterFS. Das sind andere Synchronisationsmöglichkeiten. Während Lsyncd auf Inotify-Notifikationen basiert, arbeitet DRDB auf Treiber- und GlusterFS auf Dateisystemebene. Da jedes der Projekte aufgrund der unterschiedlichen Schnittstellen besondere Stärken und Schwächen hat, sollte man das wählen, das am besten zum jeweiligen Problem passt.
Linux-Magazin Online: Gibt es etwas, das Lsyncd kann, aber nicht zum eigentlich intendierten Funktionsumfang gehört?
Axel Kittenberger: Während Rsync die primär intendierte Anwendung ist, kann Lsyncd auch stattdessen alle mögliche Programme starten, wenn sich am Dateisystem etwas tut. Lsyncd kann also überall verwendet werden, wo man mit Incron oder Inotifywait schnell an die Grenzen stößt. So gibt es in den mit Lsyncd inkludierten Beispielen eine Konfiguration, die in einem Verzeichnis alle Bilddateien in andere Formate konvertiert, wenn immer ein Bild darin abgelegt wird. Ein anderes Beispiel forciert in einem Verzeichnis die GruppenID aller Dateien; in geteilten Ordnern sehr praktisch, wenn die User ihre “umask” nicht richtig setzen.
Axel Kittenberger zeigt Lsyncd:
|
Das Bild zeigt den einfachsten Fall, wie Lsyncd benutzt werden kann: Synchronisation von zwei lokalen Verzeichnisbäumen. Lsyncd wird hier im ‘nodaemon mode’ gestartet und dann mittels der Bash in den Hintergrund gesetzt, sodass die Ausgaben auf die Konsole erscheinen. 15 Sekunden nachdem die beiden Testdateien erzeugt worden sind, kopiert Lsyncd sie mittels Rsync in das Targetverzeichnis. |






