There are services like Dropbox, Google Drive, and One Drive which allows you to sync your files across multiple devices. One thing all of these providers lack is privacy. Because your files are on someone's computer, you risk them making mistakes like what Dropbox had a history of doing.
I will separate the options available between two different categories. Products which requires that you either have a server or that you use a third party provider, and products that requires no server.
Server required. These are good for the cases where you have your own server or have a home computer you can leave open and open ports on. All files are stored on the server and the server is used as a main location for all your devices to sync to.
The main reason this is good is because you can share files with others easily by just creating a shared link which the person you're sending the file to can just click and download without installing additional software.
https://www.seafile.com/en/home/
Seafile my choice as it can use client side encryption which uses keys the server does not know. While this may not be important to you if you own the server, if it's in a third party data center it could prevent them from taking a peak at your data.
Seafile is written by people in China, but have been audited and when problems are found they fix them quickly so I have no reason not to trust it personally.
OwnCloud is a popular choice, I haven't had too much experience with it due to it having a bug that isn't going to be fixed on my server platform of choice. Take a look for yourself to see if it looks like something you'd like.
One thing OwnCloud is great for is when you have a server which you don't control via SSH and it only supports PHP. Some servers don't allow running custom binaries like what Seafile server is.
A bad thing would be because it just has community support, they don't fix bugs that quickly.
Pydio seems a bit like OwnCloud, and not much more than that.
Sparkle Share is a simple product which does encrypted syncing to a git repository. I wouldn't recommend it as it doesn't include features you'd expect and get from other products like Seafile and OwnCloud.
No server required. These products do not require a server to function which means you don't have to setup a server to sync files at all. You can setup a server and use it as a master which every device can sync to and from if you want some of the same sort of things that a server provides.
This is good as if your server is dead, you may be able to get your files from another machine which is still alive. But these systems lacks the ability to share files with a direct download. You can still share files, but the people who wants the file will have to download and install the client.
Syncthing is my choice for file synchronization. It is a bit harder to use than the other choice, but it is open source and provides a lot of power.
Syncthing is designed more for server setups as it uses a Web UI to manage and to configure it to startup automatically, you have to use a daemon configuration. Daemon configurations are not easy for people who don't know computers that well, but they do have some instructions on how to set it up.
Something this is not great at is sharing folders with others. You have to hand your ID to someone, then when they add you, you have to determine that it's actually them by reading the first few characters and then choose the folder you wish to sync with them. Discovery is all automated through the announcer servers, but it's a bit more involved to share a folder than other solutions.
This is a closed source option made by the BitTorrent corporation which because it's closed source you can never tell if it's really doing what they say it does. I have no reason to believe that they are doing anything wrong, but it's just a word of caution. Syncthing seems to do a better job at synchronization than this from my experiments, but it's your choice.
One thing BTSync does well is sharing folders. You can share a folder easily by dragging to the icon and getting a link to share with a friend. The link will ask the person to install BTSync to receive the files if they don't already have it.
As an overview, Syncthing is stable, but also is hard to use for people who knows little about computers; even with it's down falls, it is my choice for server-less sync. Seafile is a great stable solution for server based file syncing.