Die neue Version des automatischen Dateisynchronisierungssystems Syncthing 2.0 wurde veröffentlicht, bei der die synchronisierten Daten nicht in Cloud-Speicher hochgeladen, sondern direkt zwischen den Systemen der Benutzer repliziert werden, wenn sie gleichzeitig online sind. Hierbei wird das vom Projekt entwickelte Protokoll BEP (Block Exchange Protocol) verwendet. Der Code von Syncthing ist in der Programmiersprache Go geschrieben und wird unter der freien Lizenz MPL vertrieben. Fertige Builds stehen fĂŒr Linux, Windows, macOS und FreeBSD zur VerfĂŒgung.
Neben der Lösung von Synchronisierungsaufgaben zwischen mehreren GerĂ€ten eines Benutzers ermöglicht es Syncthing, groĂe dezentralisierte Netzwerke fĂŒr die Speicherung gemeinsam genutzter Daten zu schaffen, die auf den Systemen der Teilnehmer verteilt sind. Es werden Mittel zur Zugriffskontrolle und zur Erstellung von Ausnahmen fĂŒr die Synchronisierung bereitgestellt. Es ist möglich, Hosts zu definieren, die nur Daten empfangen, d. h. Ănderungen an den Daten auf diesen Hosts werden sich nicht auf die Dateninstanzen auswirken, die auf anderen Systemen gespeichert sind. Mehrere Versionierungsmodi fĂŒr Dateien werden unterstĂŒtzt, bei denen vergangene Versionen geĂ€nderter Daten gespeichert werden.
Bei der Synchronisierung wird eine Datei logisch in Blöcke unterteilt, die wĂ€hrend der DatenĂŒbertragung zwischen den Systemen des Benutzers unteilbar sind. Bei der Synchronisierung auf ein neues GerĂ€t, wenn identische Blöcke auf mehreren GerĂ€ten vorhanden sind, erfolgt die Kopierung der Blöcke von verschiedenen Knoten, Ă€hnlich wie beim BitTorrent-System. Je mehr GerĂ€te an der Synchronisierung teilnehmen, desto schneller erfolgt die Replikation neuer Daten durch Parallelisierung. WĂ€hrend des Synchronisierungsprozesses geĂ€nderter Dateien werden nur die geĂ€nderten Datenblöcke ĂŒber das Netzwerk ĂŒbertragen, und bei Umbenennung oder Ănderung der Zugriffsrechte werden nur die Metadaten synchronisiert.
Die DatenĂŒbertragungskanĂ€le werden mithilfe von TLS gebildet, alle Knoten authentifizieren sich gegenseitig anhand von Zertifikaten und GerĂ€teseriennummern, zur IntegritĂ€tskontrolle wird SHA-256 eingesetzt. Zur Erkennung von Synchronisierungsknoten im lokalen Netzwerk kann das UPnP-Protokoll verwendet werden, bei dem keine manuelle Eingabe erforderlich ist. IP-Adressen synchronisierte GerĂ€te. FĂŒr die Konfiguration des Systems und die Ăberwachung steht eine integrierte Web-OberflĂ€che, ein CLI-Client und eine GUI auf Basis der GTK-Bibliothek zur VerfĂŒgung, die zusĂ€tzlich Verwaltungswerkzeuge fĂŒr Synchronisierungsnoten und Repositories bietet.
Wesentliche Ănderungen im neuen Branch:
- Das Backend fĂŒr die Speicherung wurde von LevelDB auf SQLite umgestellt. Die Datenmigration erfolgt automatisch beim ersten Start nach dem Update. Es wird davon ausgegangen, dass die Verwendung von SQLite die Wartung und Analyse der Daten erleichtert und die Anzahl der Fehler reduziert.
- Das Format der Protokollierung wurde geĂ€ndert, sodass sie nun strukturiert erfolgt (Nachricht + Parameter im SchlĂŒssel-Wert-Format). Es wurde eine neue Protokollstufe â WARNING â hinzugefĂŒgt, die weniger detailliert ist als INFO, aber mehr Informationen im Vergleich zur Stufe ERROR bietet. Es besteht die Möglichkeit, verschiedenen Paketen unterschiedliche Protokollstufen zuzuweisen.
- Die dauerhafte Speicherung gelöschter Elemente in der Datenbank wurde eingestellt, Ă€hnliche Elemente werden nun nach 6 Monaten gelöscht (die Zeit kann ĂŒber die Option ââdb-delete-retention-intervalâ geĂ€ndert werden).
- Der Code zur Analyse der Befehlszeilenoptionen wurde verbessert, und die UnterstĂŒtzung des veralteten Formats mit einem Bindestrich wurde eingestellt (d.h. anstelle von â-homeâ sollte ââhomeâ angegeben werden). Einige Optionen wurden umbenannt oder als Unterbefehle eingestuft.
- Die Erstellung eines Standardverzeichnisses beim ersten Start wurde eingestellt.
- Die Einrichtung mehrerer Netzwerkverbindungen zwischen den GerĂ€ten, die Syncthing 2.x verwenden, wurde aktiviert. StandardmĂ€Ăig werden drei Verbindungen hergestellt â eine fĂŒr die Metadatenindizierung und zwei fĂŒr den Datenaustausch.
- Der Algorithmus zur Konfliktlösung im Falle von DateiÀnderungen wurde geÀndert.
- Aufgrund von Schwierigkeiten beim Cross-Compiling von SQLite wird die Erstellung von ausfĂŒhrbaren Dateien fĂŒr die Plattformen dragonfly/amd64, illumos/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm und windows/arm eingestellt.
Quelle: opennet.ru
