Syncthing ist eine Open-Source-Software zur kontinuierlichen Synchronisation verschiedener Geräte. Es ersetzt proprietäre Produkte und die damit einhergehenden Sicherheitsrisiken durch ein vertrauenswürdiges und dezentrales Werkzeug. Auch skaliert das Tool hervorragend und eignet sich für ältere PCs ebenso wie für eine moderne Unternehmens-IT. Dieser Workshop zeigt Installation und Betrieb des Synchronisierers.
Der Einsatz multipler Geräte, allen voran PCs, Notebooks und Smart-phones, ist in vielen Berufen an der Tagesordnung. Wer keinem Cloudservice vertrauen will, steht vor der Herausforderung, relevante Daten auf allen Geräten im neuesten Zustand zur Hand zu haben. Entsprechende Synchronisationsspezialisten versprechen die Lösung für dieses Problem. Freilich schließt das eine das andere nicht aus.
Hier kommt Syncthing [1] ins Spiel, eine Open-Source-Anwendung zur Peer-to-Peer-Datensynchronisation, die für Android, BSD, Darwin, Linux, macOS, Solaris und Windows verfügbar ist. Sie erlaubt den lokalen, aber auch den internet- beziehungsweise netzwerkbasierten Datenabgleich. Die Anwendung unterliegt der Mozilla Public License 2.0. Für die Entwicklung von Syncthing zeichnet sich das schwedische Unternehmen Kastelo [2] mit Sitz in Malmö verantwortlich. Die erste Entwicklung der in Go programmierten Umgebung geht auf das Jahr 2013 zurück und im Januar 2019 erschien die Beta-Version von Syncthing 1.0; aktuell ist Version 1.29.2 verfügbar.
Die Daten transferiert das Werkzeug über ein eigenes, freies Block-Exchange-Protokoll. Wichtig für den Netzwerkeinsatz ist die Unterstützung von IPv4 und v6 sowie NAT-Punching und -Relay. Der eigentliche Traffic ist TLS-verschlüsselt. Beim lokalen Einsatz erfolgt die Identifikation der Gegenseite über den Versand von Broadcast-Nachrichten. Wollen Sie zwei Systeme über das Internet abgleichen, kommt ein öffentlich zugänglicher Discovery-Server zum Einsatz, den die Entwickler hosten. Bei größeren lokalen Umgebungen können Unternehmen einen eigenen Erkennungsserver namens "Syncthing Discovery Server" betreiben. Über Github [3] steht ein Docker-Container zur Verfügung.
Der Einsatz multipler Geräte, allen voran PCs, Notebooks und Smart-phones, ist in vielen Berufen an der Tagesordnung. Wer keinem Cloudservice vertrauen will, steht vor der Herausforderung, relevante Daten auf allen Geräten im neuesten Zustand zur Hand zu haben. Entsprechende Synchronisationsspezialisten versprechen die Lösung für dieses Problem. Freilich schließt das eine das andere nicht aus.
Hier kommt Syncthing [1] ins Spiel, eine Open-Source-Anwendung zur Peer-to-Peer-Datensynchronisation, die für Android, BSD, Darwin, Linux, macOS, Solaris und Windows verfügbar ist. Sie erlaubt den lokalen, aber auch den internet- beziehungsweise netzwerkbasierten Datenabgleich. Die Anwendung unterliegt der Mozilla Public License 2.0. Für die Entwicklung von Syncthing zeichnet sich das schwedische Unternehmen Kastelo [2] mit Sitz in Malmö verantwortlich. Die erste Entwicklung der in Go programmierten Umgebung geht auf das Jahr 2013 zurück und im Januar 2019 erschien die Beta-Version von Syncthing 1.0; aktuell ist Version 1.29.2 verfügbar.
Die Daten transferiert das Werkzeug über ein eigenes, freies Block-Exchange-Protokoll. Wichtig für den Netzwerkeinsatz ist die Unterstützung von IPv4 und v6 sowie NAT-Punching und -Relay. Der eigentliche Traffic ist TLS-verschlüsselt. Beim lokalen Einsatz erfolgt die Identifikation der Gegenseite über den Versand von Broadcast-Nachrichten. Wollen Sie zwei Systeme über das Internet abgleichen, kommt ein öffentlich zugänglicher Discovery-Server zum Einsatz, den die Entwickler hosten. Bei größeren lokalen Umgebungen können Unternehmen einen eigenen Erkennungsserver namens "Syncthing Discovery Server" betreiben. Über Github [3] steht ein Docker-Container zur Verfügung.
Mit der Synchronisation starten
Die Inbetriebnahme von Syncthing unter gängigen Betriebssystemen gestaltet sich schon deshalb einfach, weil die Entwickler über GitHub entsprechende Installationspakete bereitstellen. Unter Debian beziehungsweise Ubuntu also einfach:
sudo apt-get install syncthing
Nach der Installation ist die webbasierte Umgebung über die URL "http://localhost:8384" verfügbar. Einzig die macOS-Installation tanzt aus der Reihe: Das Setup installiert ein Syncthing-Icon in der Menüleiste, über das Sie den Status abrufen sowie auf das Webinterface, die freigegebenen Ordner und die Programmeinstellungen zugreifen. Das Handling gestaltet sich dank des benutzerfreundlich gestalteten Webinterfaces einfach. Das Gerät, mit dem Sie aktuell arbeiten, bezeichnet Syncthing als "Dieses Gerät", Remote-Devices als "Externe Geräte". Damit zwei Devices miteinander kommunizieren können, ist der Austausch der Geräte-ID erforderlich. Dabei handelt es sich um eine eindeutige kryptografische Kennung, die Syncthing bei der Erstinstallation generiert. Diese spezifische Kennung finden Sie auf dem lokalen Dashboard im Bereich "Dieses Geräte" unter "Kennung".
Um spezifische Inhalte mit Drittgeräten abzugleichen, fügen Sie unter "Ordner" mit einem Klick auf "Ordner hinzufügen" eine erste eigene Ablage der Synchronisationskonfiguration hinzu. Bei einer Erstinstallation existiert bereits ein Standardordner. In dem zugehörigen Dialog geben Sie die Ordnerbezeichnung, die Kennung und den Pfad an. Wenn Sie bereits weitere Geräte für die Synchronisation eingerichtet haben, können Sie über die Registerkarte "Teilen" den Link zu dieser Ablage anderen übermitteln.
Bild 1: Das Syncthing-Dashboard präsentiert die relevanten Funktionen der Dateisynchronisation.
Dateiversionierung einrichten
Neben der Möglichkeit, Ordnerinhalte mit verschiedenen Geräten abzugleichen, unterstützt Syncthing die Dateiversionierung. Deren Konfiguration erfolgt über die gleichnamige Registerkarte. Sie haben die Wahl zwischen den Varianten "Papierkorb", "Einfach", "Stufenweise" und "Extern". Wichtig dabei ist, dass es sich um eine geräte- beziehungsweise ordnerspezifische Konfiguration handelt. Diese müssen Sie gegebenenfalls auf allen Devices vornehmen. Wird auf dem Remotegerät eine Datei gelöscht oder ersetzt, wandert diese bei der Papierkorbvariante in ebendiesen und ersetzt diejenige mit einer identischen Bezeichnung, sofern dort vorhanden.
Bei der einfachen Variante legen Sie fest, wie viele Versionen erhalten bleiben. Außerdem können Sie den Versionierungspfad angeben. Bei der stufenweisen Versionierung werden Dateien mit einem Zeitstempel versehen und Dateien mit einem spezifizierbaren Höchstalter (in Tagen) gelöscht. Bei der externen Versionierungsstrategie delegieren Sie die Entscheidung, wie zu verfahren ist, an ein externes Programm oder Skript.
Um die Synchronisation auf spezifische Dateitypen zu beschränken, greifen Sie zur Registerkarte "Ignoriermuster". Dort begrenzen Sie gezielt mit verschiedenen Mustern die Auswahl. In den erweiterten Ordnereinstellungen können Sie eine Fülle weiterer Einstellungen vornehmen, insbesondere den Ordnertyp. Mit der Konfiguration "Nur senden" ist das Erstellen einer Referenzkopie vorgesehen, was Änderungen auf der Gegenseite ignoriert.
Clients und Daten einbinden
Damit ein Datenabgleich erfolgen kann, müssen Sie zumindest ein Gerät hinzufügen, was Sie einfach im gleichlautenden Reiter erledigen. Erkennt die Syncthing-Installation weitere Clients, listet es diese auf der Registerkarte "Allgemein" auf. Nach der Auswahl eines weiteren Syncthing-Systems können Sie die Gerätekennung kopieren und per E-Mail, SMS oder als Barcode teilen. Außerdem müssen Sie eine Gerätebezeichnung angeben, die sich im Verbundstatus zeigt.
Um den zuvor angelegten Ordner zu teilen, wechseln Sie zu den entsprechenden Einstellungen, wählen den zweiten Rechner aus und bestimmen, welche Ordner gemeinsam genutzt werden. Damit der Datenaustausch möglich ist, müssen Sie auch auf der Gegenseite die Quelle registrieren. Sowie Sie den Ordner mit Daten befüllen, wird der erste Synchronisationsvorgang initiiert. Ein Manko ist sicherlich, dass Syncthing bislang keinen integrierten Scheduler für die zeitliche Steuerung der Synchronisationsvorgänge besitzt. Lösen lässt sich dieses Problem allerdings einfach mit der Windows-Aufgabenplanung oder einem Cron-Job.
Bild 2: Die Konfiguration eines Synchronisationsordners ist auf jedem Gerät erforderlich.
Syncthing feinjustieren
Für individuelle Anpassungen bietet die Umgebung für die meisten Anwendungsszenarien geeignete Optionen. Syncthing differenziert dabei zwischen grundlegenden und erweiterten Einstellungen, die Sie beide über das Menü "Aktionen" erreichen. In den Standardeinstellungen sollten Sie auf der Registerkarte "GUI" HTTPS aktivieren. Bei einer Neuinstallation wird kein Benutzer angelegt, auch das können Sie hier ändern. Mithilfe der Einstellungen der Registerkarte "Verbindungen" nehmen Sie Anpassungen des Synchronisationsprotokolls und des globalen Gerätesuchservers vor und begrenzen die ein- und ausgehenden Datenraten. Weiterhin verwalten Sie in den allgemeinen Einstellungen ignorierte Geräte und Ordner. Über den Menübefehl "Aktionen / Eigene Kennung" können Sie zudem die Geräteidentifikation an Dritte weiterreichen.
Für ambitionierte Syncthing-Anwender stehen über die erweiterten Einstellungen eine Vielzahl weiterer Anpassungsoptionen zur Verfügung. Sie können insbesondere die IP-Adresse samt Port und die Authentifizierungsmethode ändern. Auch die Beschränkung auf bestimmte User ist möglich. Unter "Optionen" stehen Ihnen mehrere dutzende Anpassungen wie beispielsweise die Begrenzung der Bandbreite im LAN zur Verfügung. Syncthing ist auch für das Zusammenspiel mit einem LDAP-Server gerüstet. Die Konfiguration des Verzeichnisservers hinterlegen Sie im Untermenü "LDAP".
In den erweiterten Einstellungen erledigen Sie zudem ordner- und gerätespezifische Optionen, beispielsweise die Zahl der maximalen Schreibvorgänge oder den maximal zulässigen Datendurchsatz. Schließlich spezifizieren Sie hier die Defaultwerte für neue Geräte, Ordner und Ignorier-Muster. All diese Einstellungen schreibt Syncthing in die Konfigurationsdatei "config.xml", die unter Linux im Verzeichnis "$HOME/ .local/state/ syncthing", unter macOS unter "HOME/ Library/Application Support/ Syncthing" und unter Windows unter "Benutzer/Benutzername/AppData/Local/Syncthing" zu finden ist.
Bild 3: Nach der Konfiguration einer zweiten Syncthing-Installation steht einem Datenabgleich nichts mehr entgegen.
Syncthing-Tuning
Bei einer Erstinstallation kommt Syncthing mit einer Standardkonfiguration daher, die in der Regel gute Dienste leistet. Aber spätestens dann, wenn Sie intensiv mit mehreren Systemen Daten abgleichen, taugen diese nicht mehr. Um ein Maximum aus Syncthing herauszuholen, stehen Ihnen verschiedene Stellschrauben zur Verfügung. Verfügen die von Ihnen verwendeten Systeme über ausreichend Ressourcen, sollten Sie zunächst sicherstellen, dass Sie die 64-Bit-Version der Software verwenden. Idealerweise liegt die Indexdatenbank auf einer SSD. Die meisten Änderungen finden Sie in den Optionen der erweiterten Systemkonfiguration, alternativ modifizieren Sie die XML-basierte Konfigurationsdatei.
Zunächst setzen Sie die Option "progress-UpdateIntervalS" auf den Wert "-1". Dadurch deaktivieren Sie die Fortschrittsaktualisierungen. Die dafür nicht mehr benötigte Rechenzeit steht dann den eigentlichen Synchronisierungsvorgängen zur Verfügung. Indem Sie die Option "setLowPriority" auf den Wert "false" einstellen, wird Syncthing mit normaler Priorität ausgeführt. Das hat zur Folge, dass dem Programm mehr CPU-Zeit zur Verfügung steht, was sich wiederum positiv auf die Leistung auswirken kann.
Je intensiver Syncthing zum Einsatz kommt, umso mehr Ordner sind in der Regel in die Synchronisationsvorgänge involviert. Mit der Option "maxFolderConcurrency" bestimmen Sie die Anzahl der Ablagen, die das Tool parallel vereinheitlicht. Dabei sollten Sie die inhärente Gleichzeitigkeit des zugrundeliegenden Speichersystems berücksichtigen.
Befinden sich zwei Ordner auf dem identischen Speichermedium, führt die parallele Synchronisation zu spürbaren Leistungseinbußen. Verwenden Sie hingegen ein Festplatten-Array, ist die parallele Speicherung von Vorteil. Dabei spielen natürlich auch die Datenmengen eine bedeutende Rolle. Die Herausforderung besteht in der Identifikation der optimalen systemspezifischen Einstellungen.
Ergänzend dazu können Sie mit "maxConcurrentIncomingRequestKiB" die maximale Datenmenge anpassen, die Syncthing parallel verarbeitet. Dabei handelt es sich um die Menge, die von der Festplatte geladen und über das Netzwerk transferiert wird. Hier ist zu beachten, dass es sich um einen programmübergreifenden und nicht um einen ordnerspezifischen Wert handelt. Wenn Sie mit vielen Geräten und Ordnern hantieren, kann ein Heraufsetzen des Standardwerts 256 auf 1024 MByte (oder mehr) zu einer verbesserten Performance führen.
Als ein echter Flaschenhals entpuppt sich bei der intensiven Nutzung von Syncthing die Indexdatenbank, in der Indexdaten und weitere persistente Informationen zu den Synchronisationsvorgängen lagern. In der Regel ist diese Datenbank recht klein (wenige Hundert MByte) und die Standardeinstellung "auto" ist für typische Anwendungsszenarien optimiert. Wenn Sie allerdings mit einer großen Geräte- und Ordnerzahl arbeiten, kann die Datenbank rasant anwachsen und Aktualisierungen werden häufiger notwendig. In solchen Fällen sollten Sie der Datenbank einen größeren Puffer und mehr Cache-Speicher gönnen. Das führt insbesondere zu einer Optimierung der Komprimierungsleistung. Die Option "databaseTuning" kann drei Werte annehmen: "small", "large" und "auto". Die Entwickler empfehlen den Wert "large", um ein Maximum aus der Umgebung herauszuholen.
Beim Tuning ist allerdings auch die Ausstattung des verwendeten Systems zu beachten. Bei eher schmalbrüstigen Computern sollten Sie einen anderen Ansatz verfolgen: Anstelle von Leistungsmaximierung ist das Ziel, die Ressourcennutzung möglichst weit zu drosseln. Daraus ergeben sich völlig andere Anforderungen an die Systemkonfiguration. Setzen Sie die Option "progressUpdateIntervalS" auf den Wert "-1", um die Fortschrittsaktualisierungen zu deaktivieren. Mit der Option "maxFolderConcurrency" auf "1" werden die Ordner nacheinander synchronisiert und so die maximale Speichernutzung reduziert. Das Datenbank-Tuning stellen Sie auf "small". Außerdem sollten Sie die Option "maxConcurrentIncomingRequestKiB" auf den Wert "32 MByte" setzen, um den Speicher für die Pufferung von Antworten auf eingehende Anfragen zu reduzieren. Im Praxiseinsatz gilt es zu prüfen, ob die verschiedenen Stellschrauben den gewünschten Effekt erzielen.
Erweiterungen und fehlende Features
Syncthing bietet bereits in der Standardkonfiguration eine beeindruckende Funktionalität und Flexibilität. Eine aktive Community treibt zudem die Weiterentwicklung voran. Zu den vielfach geäußerten Wünschen der Nutzer gehört ein iOS-Client. Ein solcher befindet sich seit 2020 in der Entwicklung, ist aber bislang nicht über den Beta-Status hinausgekommen. Die App trug anfangs die Bezeichnung iSyncthing, hört aber inzwischen auf den Namen Möbius Sync [4].
Während macOS-Anwender automatisch in den Genuss einer Tray-Icon-Funktion gelangen, müssen sich Windows-Anwender noch ein wenig gedulden, bis diese standardmäßig in das Installationspaket integriert ist. Bis dahin leistet SyncthingTray [5] gute Dienste.
Wollen Sie Syncthing in verteilten Umgebungen einsetzen, steht Ihnen mit sm2 ein Multiserver-Monitor zur Verfügung [6]. Damit überwachen Sie mehrere Syncthing-Instanzen und sehen so den Synchronisierungsstatus der verschiedenen Geräte und die Liste der Ordner mit lokalen Änderungen ebenso wie Fehler. Der Monitor wird als Docker-Image ausgeführt und beansprucht selbst kaum Ressourcen. Auch die Bedienung über ein Smartphone ist möglich.
Bild 4: Mit dem Multiserver-Monitor sm2 lassen sich mehrere Synchronisationsinstanzen überwachen.
Für das Zusammenspiel mit Cloudservices existiert bislang keine einfach nutzbare Funktion. Aktuell befindet sich ein Feature in der Entwicklung, das die Bezeichnung "Virtual Folder" trägt und die Cloudkommunikation in Zukunft einfach möglich machen soll. Grundsätzlich offerieren die Entwickler auch kommerziellen Support. Allerdings ist unsere Anfrage bezüglich der Preisgestaltung unbeantwortet geblieben.
Fazit
Mit Syncthing steht Ihnen ein hervorragendes Werkzeug für den Datenabgleich zwischen verschiedenen Systemen zur Verfügung. Insbesondere die einfache Handhabung und die hohe Flexibilität sprechen für dieses Tool. Dabei profitieren Administratoren von der Möglichkeit, Syncthing an leistungsstarke und schmalbrüstige Systeme optimal anzupassen. Einzig die iOS-Version lässt noch auf sich warten.