Syncthing ermöglicht die Dateisynchronisation von Daten auf mehrere Clientgeräte mit Hilfe der Peer-to-Peer-Übertragung. Es kann beliebig viele Dateien und Ordner verschlüsselt zwischen mehreren Geräten im lokalen Netzwerk oder über das Internet synchronisieren.

Um Dateien zwischen verschiedenene Geräten auszutauschen und abzugleichen, bietet sich natürlich die Cloud an. Dafür wurde sie schließlich erfunden. Unerfahrende oder gedankenlose Menschen nehmen dazu einen Anbieter, der ihnen Cloudspeicher zur Verfügung stellt, ohne diesen und die Übertragung der Daten vor Zugriff zu schützen und zu verschlüsseln.

Syncthing gibt Verzeichnisse für andere Knoten frei

Schlauer ist es dann schon, sich eine eigene Cloud einzurichten (sei es lokal oder bei einem Dienstleister) und mit entsprechenden Maßnahmen abzusichern. Das will aber ordentlich gemacht werden. Das heißt, man braucht ein Zertifikat (TLS) für die verschlüsselte Datenübertragung zum Server (so es außer Haus passieren soll) und eine verschlüsselte Speicherung der Daten auf dem Server selbst (Owncloud und Nextcloud bieten dazu ein Plugin).

Besser ist natürlich, die Daten gleich auf dem Client asymmetrisch mittels PGP zu verschlüsselt und dann erst über das Netz zu schicken. Wie man PGP (oder seine freien Ableger GPG oder GnuPG) einrichtet, kommt zu einem späteren Zeitpunkt hier im Blog.

Damit liegen die Daten dann an einer zentralen Stelle und können auf die verschiedenen Clients verteilt und synchronisiert werden.

Dateien synchen ohne Cloud dazwischen

Es geht aber auch ohne Cloud oder einen anderen zentralen Server, z.B. mit Syncthing. Syncthing wählt einen anderen Weg, die Daten auf verschiedenen Endgeräten zur Verfügung zu halten. Es synchronisiert die Dateien direkt zwischen ausgewälten Geräten, ohne eine zentrale Instanz dazwischen zu stellen. Das ist insofern chic, als die Daten nur auf den Geräten zu finden ist, auf denen man sie auch nutzen will.

Irgendwelche neuralgische Punkte wie zentrale Speicher, die schlimstenfalls in fremdem Händen und deren Zugriff liegen, fallen damit weg. Andererseits fällt damit auch das zentrale (Zwischen-)Backup weg.

Daten sparsam übertragen

Syncthing zeigt auf dem Gerät stets aktuelle Betriebsdaten an. Hier läßt sich auch die Geräte-ID kopieren

Syncthing gleicht alle Geräte, Knoten genannt, die gemeinsam einen Ordner verwalten, miteinander ab, wenn diese in Verbindung stehen. Das kann im lokalen Netzwerk stattfinden oder eben auch via Internet, wenn sich die Geräte sehen können. Damit sie aber nicht wie wild ganze Dateien hin und herschieben und damit überflüssigen Traffic erzeugen, beschränkt sich Syncthing auf das Delta einer Datei, also nur auf die geänderten Datenblöcke. Diese findet es, indem es von den Dateien blockweise einen Hashwert erstellt und diesen abgleicht. Das nennt sich Block Exchange Protokoll.

Ganz nebenbei: Dieses Verfahren (wenn auch nicht den Code) verwendet Dropbox ebenfalls. Das Verfahren ist sehr effizient, wenn es darum geht, kleine Datenmengen zu kopieren.

Syncthing einrichten

Syncthing verzichtet auf den zentralen Datenspeicher, aber zaubern kann auch diese Technik nicht. Deshalb braucht das Programm Indexserver, deren Aufgabe es ist, die verschiedenen Clients miteinander zu verknüpfen, wenn diese sich nicht selber (in einem lokalen Netzwerk) sehen können. Das wäre schlecht, wenn diese Server personenbezogene Daten erfahren können. Bei Syncthing ist das zum Glück nicht so, denn man ist nicht gezwungen, einen persönlichen Account mit einer e-Mail-Adresse oder dergleichen anzulegen.

Das Verfahren arbeitet mit einem Zertifikat, die aus einer Geräte-ID erstellt wird. Wenn die Knoten sich hingegen in einem lokalen Netzwerk befinden, fällt sogar der Indexserver weg und die Geräte synchronisieren sich selbstständig. Das passiert im LAN über Broadcast-Nachrichten, die Gerätehistorie und statischen Gerätenamen. Man kann auch eigene Discovery Server betreiben, die neben oder als Ersatz für die öffentlichen Server verwendet werden können.

Jeder Knoten wird über ein Zertifikat identifiziert.  Dieses wird als Geräte-ID anderen Geräten bekannt gemacht. Die ID kann zwar kopiert und dann versendet, aber leider nicht als Barcode angezeigt werden. Das würde die Koppelung doch ungemein erleichtern.

Die Daten werden nur mit Geräten synchronisiert, die man miteinander gekoppelt hat. Dabei lässt sich für jeden Ordner einzeln festlegen, mit welchem Knoten man ihn teilen möchte. Und man kann ebenfalls festlegen, ob das Verzeichnis auf dem Masterknoten schreibgeschützt ist und ob bis zu fünf Versionen behalten werden sollen.

Webinterface für den Überblick

Mit einem Web-Interface kann man sich einen Überblick verschaffen

Syncthing arbeitet unsichtbar im Hintergrund. Damit man sich einen Überblick verschaffen kann, welchen Stand der Datenabgleich hat, stellt es ein auf allen Plattformen gleiches Web-Interface bereit, mit dem sich Up- und Downloads im Blick behalten lassen.

Gerade bei großen Datenbeständen, die häufiger abgeglichen werden, ist das eine gute Hilfe. Auf einzelne Dateien hat man hier allerdings keinen Zugriff.

 

  • Pro: Peer-to-Peer-Übertragung, TLS-Verschlüsselung, Perfect Forward Secrecy, keine zentralen Server oder Cloudspeicher, Clients für Windows, Linux, FreeBSD, Solaris, OpenBSD, OS X und Android, Schreibschutz, Versionsverwaltung
  • Contra: kein iOS-Client, nach jeder Konfigungurationsänderung muß der Knoten neu gestartet werden

 

Link: