Csync is a bidirectional file synchronization tool like rsync, but much-much better. The developer’s main purpose for csync is to implement roaming home directories for Linux clients using a central file server using PAM to synchronize when the user logs in and out. Instead of being it’s own protocol, by default using port 873 or whatever, it can use other protocols such as http, smb, or sftp so there is no need for a server component. Though I wonder how it compares in the nitty-gritty performance aspects which really matter when synchronizing lots of data over the Internet.
Now when you’re trying to get updates over the web for a set of files outside of some sort of version control, or you want to continue a partial download, you can just use csync.
$ csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync
The only drawback I can see right off the bat is it’s a client-only tool. There’s no server component so you can’t do things like run a daemon on the file server and specify a maximum bandwidth that the client can request, which would be nice for a public download site.