Several years ago I had the need of keep in sync three computers. After some questions on a java mailing list, a very smart guy suggested me Unison.
Unison is a file-synchronization tool for Unix and Windows. It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.
Unison shares a number of features with tools such as configuration management packages (CVS, PRCS, Subversion, BitKeeper, etc.), distributed filesystems (Coda, etc.), uni-directional mirroring utilities (rsync, etc.), and other synchronizers (Intellisync, Reconcile, etc). However, there are several points where it differs:[…]
read the rest on Unison File Synchronizer.
Unison seems a bit lost in cyberspace (no new features) but the users mailing list spot some activity, so I will suggest to give it a try, because its sync alghoritm is very well written, and the MS-Window interface is good.