Here's an easily modifiable script that uses hard links and rsync. I used this as our office's starting point and now have a system that:
The nightly back-ups mainly account for users accidentally deleting files or saving changes they wish they hadn't rather than hardware failure. Since it's all just stored as a copy, I can mount it over the network if necessary or archive the the snapshot to external media anytime I want. It doesn't require any downtime to back-up or restore on our setup, but if you were dealing with some more complex services you might need to make som allowances.
"A mind is a terrible thing to have leaking out your ears." -- The League of Sadistic Telepaths