Automation and performance
Doing it quickly in the background.
When you want your files to be always available, you really need synchronisation software to run automatically; it’s no use getting on a train and realising you haven’t copied files from your desktop.
Syncthing runs in the background, scanning directories at the intervals you set, separate for each directory, and transferring changes. BitTorrentSync uses file notifications to trigger syncing, which can cause an extra system load if something is touching lots of files in a directory, even if it doesn’t change their contents. There are also regular directory scans, but the interval can’t be adjusted. The OwnCloud client also uses file notifications to decide when to update. Unison has no built-in automation, you can run its GUI as an interactive tool or call it in batch mode from Cron. Rsync is pure command line, although there’s Grsync, a third-party GUI available, it too needs to be run from Cron for automatic operation. This means either exploring the options available from the man page, although rsync -a SRC DEST is often sufficient. Alternatively, you can create a session in Grsync and call grsync-batch from Cron to run the same update at regular intervals.
File transfers are limited by network speed, so reducing the amount of data to transfer has the greatest effect on performance. BitTorrentSync breaks files into pieces. This can be more efficient when working with modified files. Syncthing uses its own open Block Exchange Protocol that also splits files for more efficient handling. Unison uses the rsync protocol, which is extremely efficient when dealing with changed files. Obviously, this applies to Rsync itself too. OwnCloud, however, uses plain HTTP or HTTPS, which means a modified file has to be retransmitted in its entirety. If you, eg, change large files, this will slow things down.