AWS has a very neat way to backup your server with attached storage called EBS Snapshots. This technology starts with a full snapshot of the entire volume and continues to do incremental snapshots based on the difference between the last snapshots.
Snap shotting is not a new technology, and many people use this in their on-premise environment to take snapshots of a virtual machine or specific disk for backup or copy purposes.
At AWS you cannot schedule these snapshots. You either have to call these via API or use the management console to do this.
Below is the high-level process to automate these snapshot backups at a particular time each day:
- Build a t1.micro that has a script to run that calls the snapshot API for EBS for the volumes you want to backup. Make sure this script runs on machine start up.
- Setup an Auto-scale group to launch a server based on a schedule (we start ours at 3am and shut it off at 3:50 am). This ensures time to kick off all the snapshot jobs – note: I do not have to run the server while they complete, only to kick off the snapshot and any pre-activities I need to accomplish before I can take my backup.
- Check your snapshots to ensure they are occurring regularly and them on a monthly or quarterly basis to ensure you can recover sufficiently in the case of an outage.
By doing this daily we have incurred the costs of our storage for snapshots and the $.02 an hour charge for our T1.micro – effectively $0.62 per month for a backup server.