I\'ve heard the phrase \"deploying applications\" which sounds much better/easier/more reliable than uploading individual changed files to a server, but I don\'t know where
After 3 years, I've learned a bit about deployment best practices. I currently use a tool called Capistrano because it's easy to set up and use, and it nicely handles a lot of defaults.
The basics of an automated deployment process goes like this:
The script SSH's over to your production server which has the following directory structure:
/your-application
/shared/
/logs
/uploads
/releases/
/20120917120000
/20120918120000 <-- latest release of your app
/app
/config
/public
...etc
/current --> symlink to latest release
Your Apache document root should be set to /your-application/current/public
The script creates a new directory in the releases directory with the current datetime. Inside that directory, your code is updated to the tag you specified.
Things that need to be kept between releases goes in the shared directory, and symlinks are created to those shared directories.
check fredistrano, it's a capistrano clone works great (litle bit confusing installing but after all runs great)
http://code.google.com/p/fredistrano/