For a while I've been looking for a way to easily manage web sites with minimum effort. ftp seems nice but doesn't easily work over a ssh connection which my provider requires (and I don't blame them). rsync is the best thing I've found so far.
The usage is rather simple:
% rsync -varz --rsh=ssh <source-dir> <host:dest-dir>
-v gives verbose detail about it's doings
-a 'archive' files i.e. preserve owernership, permissions, symlinks, etc.
-r recursively handle sub-directories
-z compress traffic
--rsh=ssh specifies to use ssh for transport
source-dir is the top-level directory that you want to copy
dest-dir is the top-level directory on you web server
rsync must be installed on both ends.
You might also want to try --delete which deletes files on the remote side that donīt exist on the sending side.
Please note that rsync will overwrite symbolic links on the remote side, so if you have, say, a directory on the local side but a symlink on the remote side then rsync will change the remote symlink to a directory!