Syncthing

Syncthing is a free, open-source peer-to-peer file synchronization application available for Windows, Mac, Linux, Android, Solaris, Darwin, and BSD.[4] It can sync files between devices on a local network, or between remote devices over the Internet. Data security and data safety are built into the design of the software.

Syncthing
Syncthing Logo
Syncthing Web Interface
Original author(s)Jakob Borg
Developer(s)Jakob Borg et al.[1]
Initial release2013-12-15
Stable release
1.6.1[2] / 2 June 2020 (2020-06-02)[2]
Repository
Written inGo
Operating systemLinux, OS X, Windows, Android, BSD, Solaris
Available inEnglish, German, Greek, Spanish, French, Italian, Polish, Portuguese, Russian, Swedish, Norwegian
TypeFile synchronization
LicenseMPL 2.0[3]
Websitesyncthing.net

Technology

Syncthing is written in Go and implements its own, equally free Block Exchange Protocol.[5]

Syncthing is a BYO cloud model where the users provide the hardware that the software runs on. It works generally in the same way that Resilio Sync does where the larger the number of mesh devices, the more efficiently data can be transferred. It supports IPv6 and, for those on IPv4 networks, NAT punching and relaying are offered. Devices connecting to each other require explicit approval (unless using the Introducer feature) which increases the security of the mesh. All data, whether transferred directly between devices or via relays, is encrypted using TLS.[6][7]

Conflicts are handled with the older file being renamed with a "sync-conflict" suffix (along with time and date stamp), enabling the user to decide how to manage two or more files of the same name that have been changed between syncing.[8] GUI Wrappers can use these files to present the user with a method of resolving conflicts without having to resort to manual file handling.

Efficient syncing is achieved via compression of metadata or all transfer data,[9] block re-use[10] and lightweight scanning[11] for changed files, once a full hash has been computed and saved. Syncthing offers a "Master Folder" feature[12] where updates from remote devices are not processed, various types of file versioning[13] (trash can, simple or staggered versioning as well as handing versioning to an external program or script) and file/path ignore patterns.[14] Two different SHA256 hashing implementations are currently supported, the faster of which will be used dynamically after a brief benchmark on start-up.[15] Moving and renaming of files and folders is handled efficiently, with Syncthing intelligently processing these operations rather than re-downloading data from scratch.[16]

Infrastructure

Device discovery is achieved via publicly-accessible discovery servers hosted by the project developers,[17] local (LAN) discovery via broadcast messages, device history and static host name/addressing. The project also provides the Syncthing Discovery Server[18] program for hosting one's own discovery servers, which can be used alongside, or as a replacement of the public servers.

The network of community-contributed relay servers allows devices that are both behind different IPv4 NAT firewalls to be able to communicate by relaying encrypted data via a third party. The relaying performed is similar in nature to the TURN protocol, with the traffic TLS-encrypted end-to-end between devices (thus even the relay server cannot see the data, only the encrypted stream). Private relays can also be set up and configured, with or without public relays, if desired. Syncthing will automatically switch from relaying to direct device-to-device connections if it discovers that a direct connection has become available.[19]

Syncthing can be used without any connection to the project or community's servers:[20] upgrades, opt-in usage data, discovery and relaying can all be disabled and/or configured independently, thus the mesh and its infrastructure can all be run in a closed system for privacy or confidentiality.

Configuration and management

Syncthing can be configured via a web UI locally or remotely (and supports access via proxy server), the REST and Events APIs or one of the community-contributed wrapper programs.[21] Links to Docker images are also provided on the community contributions page, as well as links to supported configuration management solutions such as Puppet, Ansible and others.

Reception

History

DateVersionMajor Changes
2020-04-081.4.2[27]
  • Bugfixes
2020-04-071.4.1[28]
  • Bugfixes
2020-03-171.4.0[29]
  • Bugfixes and important changes
2020-02-041.3.4[30]
  • Bugfixes
2020-01-061.3.3[31]
  • Bugfixes and other minor changes
2019-12-031.3.2[32]
  • Bugfixes and other minor changes
2019-11-051.3.1[33]
  • Bugfixes and other minor changes
2019-10-011.3.0[34]
  • New parameter for adjusting database size
  • Better database performance
2019-09-031.2.2[35]
  • Bugfixes
2019-08-071.2.1[36]
  • Bugfixes
2019-07-091.2.0[37]
  • New transport protocol (QUIC)
  • Automatic crash reporting
2019-06-031.1.4[38]
  • Bugfixes
2019-05-091.1.3[39]
  • Hotfix for release to fix a panic bug on Windows
2019-05-071.1.2[40]
  • Bugfixes
2019-04-02 1.1.1[41]
  • Add support for TLS1.3
2019-04-22 1.1.0[42]
  • User/group ownership follows parent dir
  • Fix hashing performance
2019-02-05 1.0.1[43]
  • Bugfixes
2019-01-01 1.0.0[44]
  • Limit max simultaneous scans
  • Show limit locally changed files for receive only folders
2016-06-190.14 “Dysprosium Dragonfly”[45]
  • new, extensible sync protocol (full rehashing of folder contents will happen on first restart)
2016-05-170.13 “Copper Cockroach”[46]
  • Serve files while downloading them
  • Unique folder ID separate from label
2015-11-050.12 “Beryllium Bedbug”[47]
  • Connection Relaying
  • Device Discovery over HTTPS
2015-04-220.11[48]
  • Conflict Handling
  • CPU Usage Improvements
  • Performance Improvements When Syncing Many Small Files or Very Large Ones
  • External Versioning
2014-10-080.10[49]
2014-08-010.9[50]
2014-04-140.8[51]
2014-03-300.7[52]
2014-02-230.6[53]

The initial public binary release (v0.2) was made on 30 December 2013.[54]

In October 2014 it was announced by the original author that Syncthing was being rebranded as "Pulse".[55] However, on November 17, the developer decided not to change Syncthing to Pulse and is no longer working with ind.ie. Ind.ie's Pulse is now an officially sanctioned fork of Syncthing.[56]

See also

References

  1. "AUTHORS". Retrieved 7 April 2016 via GitHub.
  2. "Releases". Retrieved 2020-06-03 via GitHub.
  3. "LICENSE". Retrieved 7 April 2016 via GitHub.
  4. Wallen, Jack (5 January 2016). "Let Syncthing turn your desktop into a local cloud for your mobile device". TechRepublic. CBS Interactive.
  5. "Block Exchange Protocol v1". Retrieved 7 April 2016.
  6. "Security Principles — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  7. "Relaying — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  8. "FAQ — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  9. "FAQ — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  10. "Understanding Synchronization — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  11. "Understanding Synchronization — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  12. "Archived copy". Archived from the original on 2016-11-30. Retrieved 2016-11-29.CS1 maint: archived copy as title (link)
  13. "File Versioning — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  14. "Ignoring Files — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  15. "cmd/syncthing: Add selectable sha256 package (fixes #3613, fixes #3614)". Github.com. 2016-09-22. Retrieved 2017-01-04.
  16. "FAQ — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  17. "Understanding Device IDs — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  18. "Syncthing Discovery Server — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  19. "Relaying — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  20. "Security Principles — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  21. "Community Contributions — Syncthing v0.14 documentation". Docs.syncthing.net. Retrieved 2017-01-04.
  22. "Security Now! Episode 456". Grc.com. Retrieved 4 November 2014.
  23. "Security Now! Episode 603". Grc.com. Retrieved 7 February 2019.
  24. "Security Now! Episode 698". Grc.com. Retrieved 7 February 2019.
  25. "Security Now! Episode 727". Grc.com. Retrieved 14 August 2019.
  26. "Security Now! Episode 734 on YouTube". YouTube.com. Retrieved 3 October 2019.
  27. v1.4.2, The Syncthing Project, 2020-04-08
  28. v1.4.1, The Syncthing Project, 2020-04-07
  29. v1.4.0, The Syncthing Project, 2020-03-17
  30. v1.3.4, The Syncthing Project, 2020-02-04
  31. v1.3.3, The Syncthing Project, 2020-01-06
  32. v1.3.2, The Syncthing Project, 2019-12-03
  33. v1.3.1, The Syncthing Project, 2019-11-05
  34. v1.3.0, The Syncthing Project, 2019-10-01
  35. v1.2.2, The Syncthing Project, 2019-09-03
  36. v1.2.1, The Syncthing Project, 2019-08-07
  37. v1.2.0, The Syncthing Project, 2019-07-09
  38. v1.1.4, The Syncthing Project, 2019-06-18
  39. v1.1.3, The Syncthing Project, 2019-05-31
  40. v1.1.2, 2019-05-31
  41. v1.1.1, 2019-05-31
  42. v1.1.0, 2019-05-31
  43. v1.0.1, 2019-05-31
  44. v1.0.0, 2019-05-31
  45. "0.14". Github.com. 19 June 2016.
  46. "0.13". Github.com. 17 May 2016.
  47. "0.12". 14 April 2016.
  48. "0.11". Github.com. 14 April 2016.
  49. "0.10". Github.com. 14 April 2016.
  50. "0.9". Github.com. 14 April 2016.
  51. "0.8". Github.com. 14 April 2016.
  52. "0.7". Github.com. 14 April 2016.
  53. "0.6". Github.com. 14 April 2016.
  54. "Releases". 30 December 2013 via GitHub.
  55. Borg, Jakob (9 October 2014). "Introducing Pulse, and ind.ie". Retrieved 7 April 2016.
  56. Borg, Jakob (17 November 2014). "Syncthing is still Syncthing". Retrieved 7 April 2016.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.