These web pages are hosted on chiark, but since I'm on the wrong end of a dialup line, I write and test them on my private machine and upload changed pages when I connect. To do this I use make with a suitably funky makefile. This allows me to do things like this offline:
mnementh$ make FILE=directory/file.html addor
mnementh$ make FILE=badfile.html removeand then when online just say 'make' and have any updated files copied across, removed files deleted, new files created along with necessary directories, and so on. There's also a target for running weblint on all the HTML files.
I communicate with the remote server using ssh/scp, but all the remote operations are abstracted into variables, so provided that you can come up with makefile fragments to remotely do the following things you should be able to use something else:
The rationale for doing things with make was that make is very good at doing options based on file timestamps, which is really what mirroring is all about. It just grew from there :-)
Anyway, have a look at the Makefile if you're interested...