Blog of Raivo Laanemets

Stories about web development, freelancing and personal computers.

A new backup infrastructure on AWS

I have set up a new offsite backup infrastructure for my client projects. The backup system has proved its usefulness in many times in the past. The new ifrastructure works similar to the old one (same scripts) but is now hosted on Amazon Web Services (AWS). The old server is now running some partially-critical projects and was not able to run backups anymore.

The new system automates snapshot creation into a S3 bucket. Another difference is that all the client servers are now finally accessed over SSH and rsync (bye bye FTP). There are about 20 servers backed up every night this way. The new system has been run for a month now.


AWS costs are sometimes hard to estimate and AWS might be quite pricey for certain use cases. For my use case, it was actually the cheapest solution. The current solution uses:

  • 1 EC2 nano instance (5.04 USD/month)
  • 50GB of magnetic EBS storage (2.50 USD/month)
  • 10GB of S3 for snapshot (0.3 USD/month)
  • About 4M IO operations (0.3 USD/month)

The high IO operation count is directly related to the file count (currently 300 000). Data transfer costs are neglible. This makes it 8.14 USD/month total. The total with VAT (on electronically supplied services) is 9.77 USD (~8.5-9 EUR). This is not bad. Most VPS-based solutions with 50+GB disk cost a lot more. Unlike most VPS providers, this setup has more flexibility. New EBS volumes can be easily added.

I also considered building a physical server before settling with AWS. I tested out 2 solutions, one based on an old Core 2 Quad (electricity cost is already 5 EUR/month, noisy, cannot run in living quarters) and the other based on a Raspberry Pi 2 (USB disk proved slow and unreliable, filesystem errors). I was not satisfied with either of these and decided to go with AWS. I have been happy so far.


No comments have been added so far.

Email is not displayed anywhere.
URLs (max 3) starting with http:// or https:// can be used. Use @Name to mention someone.