Generally-speaking, it's best to not rely on snapshots for backup. Rather, you want to use something like Puppet or Chef to manage your server's configuration. That way, you can have a version controlled, easily reproducible server config to deploy where you want.
For static data, there are innumerable ways to back things up, but one of my favorite go-to backup products is rsnapshot. It uses rsync over ssh to perform incremental backups to another host. It's dead simple to set up and I've found it to be very reliable. Keep in mind that rsnapshot (or any other "dumb" copy-based solution) cannot be used on databases without flushing the tables to disk and grabbing a read lock or some other method of ensuring that the database files are consistent on disk.