Well, there's a lot of synchronizing software out there... but if it's code you're trying to keep synchronize, you should really use source control software. Why? ...because it will not just keep you synchronized, it will also keep a history of all your changes so you can revert or track down problems that happened due to changes in the source, allow you to do diffs on your changes to see what's changed, and allow you to have multiple branches of code and tags (to have multiple versions and track your releases).
There are plenty of alternatives that are free for source control:
0. SVN
1. Mercurial
2. GIT
3. etc...
There are quite a few
options[
^] to choose from. They usually differ in the way they keep their repositories (central v. distributed), how the tracking is achieved, and how the tracking info is kept. They all have positives and negatives so you'll have to look through a few and see what suits you the best.
Once you learn how to use it, you'll wonder how you lived without it. :)