They fact that the choice is 'rsync' or 'ftp' scares the heck out of me. Doesn't everyone use a packaging system with reproducible builds, deploying these packages to staging first, testing it, then deploying the same signed package live using real configuration management (eg. Puppet) ...?
It's not scary at all, having that kind of process for a small shop would be absurd. When your developers are the only tech guys you have, and do all system administration, database administration, new programming, bug fixes, and deployment, you don't need or want red tape between yourself and yourself.
That kind of process works for large teams where different people are doing those jobs and need to collaborate effectively without finger pointing; but it's not for a small cowboy team at all. You simply can't maintain that kind of formality and process when you're doing everything.
Honestly, that's red tape that just isn't necessary for the vast majority of small business applications. Making a fix in dev environment, testing it, and pushing the fix live by a single developer is and should be the norm.