SyncDiff(erent) is a statefull rsync-like file synchronizer.  Think rsync + git + csync2 + unison