|There's more than one way to do things
Have you considered using CVS? I keep a CVS repository on my development server and update my production server from it. rsync and a shell script work pretty well too, but of course you don't get the revision control you'd have with CVS. E.g. when some new code goes horribly awry, you can easily retrograde from the CVS repository, because CVS stores not only the current version of your code, but also the previous revisions.