The release of the open P2P file synchronization system Syncthing 2.0

The release of the Syncthing 2.0 file synchronization system has been announced, where synchronized data is not uploaded to cloud storage but directly replicated between user systems when they are simultaneously online, using the protocol BEP (Block Exchange Protocol) developed by the project. The Syncthing code is written in Go and is distributed under the free MPL license. Ready builds are provided for Linux, Windows, macOS, and FreeBSD.

In addition to solving data synchronization tasks between multiple devices of a single user, Syncthing allows the creation of large decentralized networks for storing shared data distributed across participant systems. It provides tools for access control and creation of exclusions for synchronization. It is possible to define hosts that will only receive data, meaning changes on these hosts will not be reflected in instances of data stored on other systems. Several file versioning modes are supported, which keep past versions of modified data.

During synchronization, a file is logically divided into blocks that are indivisible during data transfer between user systems. When synchronizing to a new device, if identical blocks exist on multiple devices, the copying of blocks occurs from different nodes, similar to how the BitTorrent system operates. The more devices involved in synchronization, the faster the replication of new data will occur due to parallelization. During the synchronization of modified files, only the changed data blocks are transmitted over the network, and when renaming or changing access rights, only metadata is synchronized.

Data transmission channels are formed using TLS, with all nodes authenticating each other via certificates and device identifiers, and SHA-256 is employed for integrity checking. The UPnP protocol can be used to identify synchronization nodes in the local network, eliminating the need for manual input. (the key to connect to is specified, and iroh finds the associated host and establishes an encrypted connection using the QUIC protocol). Direct P2P connections are established whenever possible, but if not, it falls back to using relays, which are also employed for host discovery by keys. You can run your own relay or connect to public relays supported by the community. synchronized devices. The system can be configured and monitored through a built-in web interface, CLI client, and a GUI based on the GTK library, which additionally provides tools for managing synchronization nodes and repositories.

Key changes in the new branch:

  • The storage backend has been switched from LevelDB to SQLite. Data migration is performed automatically during the first run after the update. It is expected that using SQLite will simplify data maintenance and analysis, as well as reduce the number of errors.
  • The logging format has been changed, now the logs are generated in a structured manner (message + parameters in key-value format). A new log level — WARNING has been added, which is not as detailed as INFO but provides more information compared to the ERROR level. It is now possible to assign different log levels to different packages.
  • The eternal storage of deleted items in the database has been discontinued; such items are now removed after 6 months (the duration can be changed through the '—db-delete-retention-interval' option).
  • The code for parsing command-line options has been improved, and support for the outdated format with a single dash has been discontinued (i.e., instead of '-home', it should be specified as '—home'). Some options have been renamed or changed to subcommand status.
  • The default directory creation on the first run has been discontinued.
  • The installation of multiple network connections between devices using Syncthing 2.x has been implemented. By default, three connections are created — one for metadata indexing and two for data exchange.
  • The conflict resolution algorithm has been changed in the event of file deletions.
  • Due to the complexities of cross-compiling SQLite, the build of ready-to-use executables for the platforms dragonfly/amd64, illumos/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm, and windows/arm has been discontinued.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster