The release of the file synchronization system Syncthing 1.16 has been announced, which synchronizes data directly between user systems without uploading it to cloud storage. This is done when the systems are online simultaneously, using the BEP (Block Exchange Protocol) developed by the project. Syncthing's code is written in Go and is distributed under the MPL open license. Ready builds have been prepared for Linux, Android, Windows, macOS, FreeBSD, Dragonfly BSD, NetBSD, OpenBSD, and Solaris.
In addition to solving data synchronization tasks between multiple devices of a single user, Syncthing makes it possible to create large decentralized networks for sharing data that are distributed across the participant's systems. It provides flexible access control tools and exceptions for synchronization. Hosts can be defined that will only receive data, meaning that changes on these hosts will not affect the data instances stored on other systems. Multiple file versioning modes are supported, preserving past versions of modified data.
During synchronization, a file is logically divided into blocks, which are indivisible parts when transferring data between user systems. When synchronizing to a new device, if identical blocks exist on multiple devices, block copying occurs from different nodes, similar to how the BitTorrent system works. The more devices involved in synchronization, the faster new data replication 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 the 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. For system configuration and monitoring, there is a built-in web interface, a CLI client, and Syncthing-GTK GUI, which additionally provides tools for managing synchronization nodes and repositories. To simplify the discovery of nodes, Syncthing is developing a node discovery coordination server.
The new version implements experimental support for file encryption, allowing the use of Syncthing with more security. servers untrustworthy, for example, for synchronizing your data not only with your devices but also with external servers outside the user's control. Additionally, the new release includes a dialog for confirmation before canceling changes or overwriting directories. Issues with excessive CPU resource consumption in dialogs with animated progress indicators have been resolved. Immediately following, update 1.16.1 was released, which fixed a problem in the Debian package.


Source: opennet.ru
