I have an Ubuntu Server hosted with Amazon Web Services, but I'd like to back it up, and know that I can restore it to a different server. (local dev server, competing cloud server, ec2 server in a different region, etc.)
This sort of thing must be commonplace, what's the generally accepted procedure / toolset to use here?
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.