Wer Daten zwischen versch. Servern in Echtzeit synchronisieren möchte (ähnlich Dropbox, Google Drive, Apple iCloud), steht vor einer Fülle von Angeboten. Ein Anspruch an die Software war es, zwei Instanzen von ownCloud bzw. Nextcloud (eine lokal im LAN und eine remote in einem Rechenzentrum) synchron zu halten.

Folgende Angebote wurden getestet und bewertet.

Nach Abwiegen der Vor- und Nachteile hat für uns Syncthing (siehe weiter unten) das Rennen gemacht und ist seit mehreren Monaten fehlerlos im Einsatz.

BitTorrent Sync

BitTorrent Sync ist einfach einzurichten und für alle gängigen Desktop-/Server-/Mobile-Systeme verfügbar. Die Geräte werden untereinander mit einem Token verbunden.

Auch wenn in diversen Foren rege Diskussionen darüber geführt werden, wie sicher ein Token nicht sein mag; errät jemand genau unseren Token, hat er Vollzugriff auf alle Daten. Aus diesem Grunde scheidet diese Software für uns aus. Es gibt leider (noch) keine Möglichkeit einer zusätzlichen Sicherheit (zB einen zusätzlichen Benutzernamen/Passwort oder die Möglichkeit, nur bestimmte Nodes an seinen Server verbinden zu lassen.

Auf rsync/inotify basierende Lösungen

Es existieren hier recht gute Lösungen wie zB Lsyncd, Unison oder rsync selbst. Bei diesen Diensten können in vorgegebenen Intervallen mittels Cronjob die Synchronisierungen automatisch angestoßen werden, diese erfolgen hier dann jedoch nicht in Realtime sondern in Neartime (also dem eingestellten Intervall).

Manche dieser Tools verwenden inotify, um die Synchronisierung sofort für eine Datei bze. ein Verzeichnis anzustoßen (beim Erstellen, Ändern, Löschen). Sollte der Zielserver jedoch gerade nicht erreichbar sein, findet keine Synchronisierung statt und der Datenbestand zwischen den beiden Servern könnte inkosistent werden.

Professionelle Tools

Tools wie GlusterFS oder DRBD eignen sich bei professionellen Systemen hervorragend für die Synchronisierung, sind jedoch bei kleineren Lösungen ein Overkill und recht komplex einzurichten.

Pulse (vorher "Syncthing")

Pulse (previously Syncthing) replaces proprietary sync and cloud services with something open, trustworthy and distributed. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party, and how it's transmitted over the Internet.

Pulse hat viele interessante Features, die den oben genannten Lösungen tweilweise überlegen sind.

  • Daten werden ausschließlich auf eigenen Server gespeichert. Es gibt keinen zentralen Server der kompromittiert werden könnte
  • die Kommunikation zwischen den Nodes erfolgt mittels TLS. Dank Perfect Forward Secrecy können abgefangene Datenströme auch im Nachhinein nicht entschlüsselt werden
  • jeder Node wird mit seinem eigenen starken kryptografischem Zertifikat identifiziert. Nur Nodes, die dezidiert erlaubt wurden, können mit unserem Cluster verbunden werden

Die Installation ist recht einfach. Auf der Projektseite lädt man sich die Software herunter (verfügbar für Mac, Windows, Linux, BSD und Solaris), installiert sie und konfiguriert seinen Server mittels Web-Interface.

Ordner: hier werden ein oder mehrere Ordner ausgewählt, die zur Synchronisierung verwendet werden sollen

Devices: hier wird definiert, welche Devices (andere Rechner) sich mit diesem Node verbinden dürfen

Im Anschluss wird noch definiert, welche Devices welche Ordner synchronisieren dürfen. Ist alles eingerichtet, wird automatisch in alle Richtungen synchronisiert. Sollte ein oder mehrere Nodes nicht erreichbar sein, wird automatisch abgeglichen, sobald dieser wieder verfügbar ist.

pulse-screenshot