Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes.1)
Syncthing is basically like Dropbox, MEGA, or Google Drive - except that there is no central server, and all synchronization happens between the computers themselves.
Primarily, this means there's no capacity limits (except your HDDs), no big brother spying, no possible shutdown involved. But it also means there is no way to link Syncthing stuff to the outside, and that the computers need to be online at the same time to sync.
Its primary use-case is when a single person has more computers, and wants to keep some folders synchronized on all of them.
What we use it for, however, is general data sharing - there's semi-public Syncthing folders (listed below). It works well for common (audio, video) files and projects, for sharing essential software packages, and for community-powered backups as well. Also for local (LAN) sync - there is no need for internet, local network is enough.
WARNING: Because Syncthing wasn't really meant for this sort of use, it requires a bit of carefulness on part of everyone involved. There's no authentication, no permissions, and by default no file versioning. It's not too easy to mess up accidentally, but if you do, it's not pretty.
Send Only & Receive Only limit the folder/file changes either received or sent from the current machine.
The default behavior is that Syncthing keeps no history of synced files.
This is generally what you want, as it saves space on your machine, but it can cause data loss, in case someone else accidentally deletes/modified a file on their machine.
Syncthing, in typical unix neckbeard fashion, has several different modes of file versioning:
This versioning strategy emulates the common “trash can” approach. When a file is deleted or replaced due to a change on a remote device, it is a moved to the trash can in the
.stversionsfolder. If a file with the same name was already in the trash can it is replaced.
A configuration option is available to clean the trash can from files older than a specified number of days.
With “Simple File Versioning” files are moved to the
.stversionsfolder (inside your shared folder) when replaced or deleted on a remote device. This option also takes a value in an input titled “Keep Versions” which tells Syncthing how many old versions of the file it should keep.
You can use syncthing with external harddrives. That is good for backup clusters, huge projects, etc.
On windows it helps to set fixed drive letter to your hardrive, so there are no mismatches.
When assigning your drive letter, make sure to choose a letter toward the end of the alphabet list. For example, X, Y, or Z — otherwise Windows has the tendency to eventually assign a different letter. Also, keep in mind that it will only be the assigned letter on the computer you changed it on. If you take your external drive to a different PC, Windows will give it a different dynamic letter.2)
Syncthing marks each synced folder with an empty, hidden directory in that folder, called
.stfolder. This tells Syncthing everything is in order, and this is really the folder which it should be modifying/uploading changes from.
If that (empty) folder is deleted, Syncthing will vomit with a similar error message:
2020-04-02 21:12:50: Error on folder "KSX_OUT" (ksx-out): folder marker missing (this indicates potential data loss, search docs/forum to get information about how to proceed)
This can happen for a couple of reasons:
.stfolder(by right-clicking and selecting “New Folder”) in that directory.
Hashing, compression and encryption cost CPU time. Also, using the GUI causes a certain amount of extra CPU usage to calculate the summary data it presents. Note however that once things are in sync CPU usage should be negligible.
To minimize the impact of this, Syncthing attempts to lower the process priority when starting up.
To further limit the amount of CPU used when syncing and scanning, set the environment variable GOMAXPROCS to the maximum number of CPU cores Syncthing should use at any given moment. For example, GOMAXPROCS=2 on a machine with four cores will limit Syncthing to no more than half the system’s CPU power.