Immer Synchron, dank Block Exchange und Syncthing

Gunrdsätzlich tue ich mich etwas schwer damit meine Daten und Dateien an Cloud-Services zu übergeben oder mit einem Online-Server zu synchronisieren, den ich nicht selbst verwalte. Ich glaube, ich gehöre nicht zu „den üblichen Verschwörungstheoretikern“, die zunächst einmal jedem Anbieter böse Absichten unterstellen, ich weiß aber dennoch ganz gern wer welche Daten von mir besitzt und (in groben Zügen) welches Risiko ich damit eingehe den Dienst von Anbieter A oder B zu verwenden.

Dies ist auch einer der Gründe warum ich bisher Dienste wie Dropbox, OneDrive oder Google Drive eher versucht habe zu vermeiden. Umso mehr hat es mich gefreut, als ich auf ein Projekt namens Syncthing gestoßen bin.

Klassische Cloud-Dateidienste funktionieren in der Regel so, dass es einen zentralen Server gibt, auf den die Daten hochgeladen werden und einen lokalen Service (auf meinem Rechner), der das Dateisystem überwacht und alle Änderungen an den Server weitergibt. Hat man also mehrere Computer, auf denen man Daten gemeinsam nutzen oder synchron halten möchte, müssen die Änderungen auf einem der Computer zunächst einmal an den Server weitergegeben und dann auf den zweiten PC heruntergeladen werden. Syncthing funktiniert da anders: Syncthing vernetzt mehrere Computer mithilfe des sogenannten Block Exchange-Protokolls direkt miteinander. Das hat folgende Vorteile:

  • Die Daten werden direkt zwischen den Computern ausgetauscht. Grundsätzlich ist kein zentraler Server notwendig so dass die zeitliche Verzögerung zwischen der Aktualisierung einzelner Verzeichnissedeutlich reduziert werden kann.
  • Ein Syncthing-Netzwerk kann ausschließlich mit eigenen Computern betrieben werden. Zum Einen entfällt damit die Notwendigkeit eines (kostenpflichtigen) Cloud-Service-Anbieters und zum Anderen liegen die Daten ausschließlich auf den eigenen Computersystemen.
  • Die Daten werden zwischen den einzelnen Netzwerkknoten verschlüsselt übertragen. Kommt es also zu einem man-in-the-middle-Angriff, sieht der Angreifer lediglich verschlüsselte Daten. Dies ist vor allem auch für den nächsten Punkt sehr interessant:
  • Syncthing lässt sich nicht nur innerhalb lokaler Netzwerke betreiben, es ist auch möglich über das Internet zu kommunizieren. Um die Authentizität der vernetzten Computer sicherzustellen, besitzt jeder Host eine eineindeutig ID, die vor jedem Datenaustausch mit dem jeweiligen Partner ausgetauscht werden muss.
  • Der Datenaustausch kann ziemlich granular definiert und konrolliert werden. Grundsätzlich wird immer auf Verzeichnisbasis geteilt, jedoch kann jedes der Verzeichnisse beliebige Unterverzeichnisse beinhalten und es wird für jedes Verzeichnis separat festgelegt mit welchem Partner geteilt werden darf.

Ein zusätzlicher Vorteil besteht darin, dass die Anwendung nicht auf ein bestimmtes Betriebsystem festgelegt ist – vielmehr handelt es sich bei Syncthing um eine Bibliothek, die die Netzwerk-Service bereitstellt, der widerum in eigene Anwendungen integriert werden kann:

  • Für Windows-Systeme z.B. gibt es eine Implementierung namens SyncTrayzor, die über Github verfügbar ist und für Client-PCs entwickelt wurde. Es gibt einige gute Anleitungen um SyncTrayzor auch als Windows-Dienst einzurichten (um ihn z.B. als Server-Komponente zu verwenden).
  • Da ich selbst ein Synology NAS betreibe, bevorzuge ich für einen Syncthing-Server jedoch das von der SynoCommunity bereitgestellte Softwarepaket. Da sich Syncthing auch automatisch aktualisiert, ist es unerheblich, dass das Paket nicht die neueste Version der Bibliothek enthält – diese wird automatisch beim ersten Start heruntergeladen und installiert.
  • Wer seine Handy-Daten zentral sichern oder austauschen möchte, dem sei die Android-App zu empfehlen.

Mein Fazit: Auch wenn Syncthing (aktuell noch) nicht für die Datensynchronisation auf Enterprise-Level gedacht ist, ist es ein unglaublich einfach zu handhabendes, stabiles und performantes Tool, das auf keinem PC fehlen sollte.