The other day I had a client who forgot to pay their bill and the hosting company deleted their server. So what does this have to do with anything? Well I though it would be good to think how we as a developer could of helped the client out of a really tight spot. One way of course is to run backups on the server on a regular basis. We asked the client if they wanted to do this and they declined. The only issue now is we're almost at square one with their website and its up to us now to recreate their site.
Now then I do have a different solution if the client doesn't want to pay for backups one could setup versioning on the source code. This solution provides multiple benifits that backups couldn't do. One now you have a solid backup of their source code in a repository. Second when your working on the site you can quickly check out the source code on a test server and do the work there. When your done just use the built in update utilities most versioning software provide. The other nice thing about this is if you work with other programmers on the project you'll have a way to track changes to the code.
Versioning is not an automated process but if you add this tool to your toolbox then its something that will make your life easier in the end.