Unison is a file-synchronization tool for OSX, 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.
If you just want to use Unison, you can probably find a pre-built binary for your architecture either on your favorite package manager or here:
http://www.cis.upenn.edu/~bcpierce/unison
If you want to play with the internals, have a look at the file src/ROADMAP.txt for some basic orientation.