I would like suggestions on software and methods/ideas/technologies which can be used to keep specific folders synchronized between a laptop and a desktop (or any two computers for that matter). The software / method should make use of a network (internet and/or LAN) to sync files and the software / method should probably use a 3rd machine (server / NAS) to keep the files which are being synched.
I am trying to avoid depending on 3rd party services (not 3rd party software) like Dropbox. Dropbox and similar services seem to lag flexibility and besides, who knows how long they'll be around? So the software / method would preferentially be something which can be setup on the clients involved and a server. The reason why I mention "method/ideas/technologies" is because maybe there isn't one piece of software which does it all or maybe I'll need to write some software my self - so an idea could be: "Setup a samba share, use ssh/sftp/scp and you shell scripting skills to monitor folders and take action when changes is detected"
I would like to be able to do the following:
# Add individual folders
So add for example "d:\documents\work\" from pc1 and then on pc2 have that folder reside and sync as "c:\some\folder\work\"
# Choose where to store a possible repository
So instead of my files being stored on Dropbox's secret server I'll like to choose which server install the server software on so I have control of the "repository".
# Choose between auto and manual sync
Choose whether a given folder should automatically sync or if it should only sync on my manual command.
# Some form of version control
Obviously the software / solution should recognize a minimum of version control: As a minimum detect and ask for action when two files of the same name appears in the same folder. (For example if folder A on pc1 is not currently in sync with folder A on pc2 (or the repository) (because it hasn't been connected to the network / internet recently) and both pc1 and pc1 placed a file foo.bar in folder A. Then There will obviously be a problem which attention.
It is important to understand that I'm not necessary looking for something like SVN even though it seems to fit my needs. But SVN is, in my understanding and the way I've use it, intended for manually executing automated tasks which would be cumbersome to do manually (copying files, merging files, detecting various types of conflicts and of course keeping version control). It is not intended to be an advanced laptop-desktop-synching application
Please let me know how you deal with desktop-laptop file synchronization, suggestions for software and/or home brewed solutions.