November 21, 2006 @ 01:57 PM
So my days and nights lately have been filled with Amazon Web
Services. We've got a new project (more at our blog) on the fire that
uses Amazon's EC2 and
S3
services to provide a significant portion of our infrastructure. I
won't say that it's been all roses... there are definitely some
rough edges and warts, but I believe in the core of these
services. Enough to stick with them through the dirty diapers,
colic and growing pains.
One little gem (ooh, double entendre) that's been making my life
on AWS a
little bit easier is the s3sync
library. It's a great little library that largely mimics the
rsync interface, but adapts it for use with Amazon's S3. Since EC2
has no persistent storage, being able to incrementally and
differentially back up our data is a huge priority that s3sync is helping us manage. Oh, and did I
mention that s3sync is written in
a lovely little language named Ruby? Eh? Eh? Good stuff. And it's
been keeping me a bit more sane, which is always a good thing,
so...
As a tiny little attempt to give something back to the project,
I've created a rubygems version of the lib that does what you'd
expect a gem to do (takes the s3sync.rb script that acts as an
interface to the libs and the s3cmd.rb script for managing your
buckets and moves them to a bin directory in your path [relative to
your ruby installation] and installs the actual libs along-side the
rest of your gems).
After some email correspondence with Gregory Bell, the projects
author, we're making the gem version available here for now. Because of some
issues with the multiple contributors individual licenses we can't
put it on RubyForge just yet (if you're one of the authors, please
get in touch with me via the comments below!), but I've got some
things in the works, so hopefully that will be a reality sooner
than later.
In case you're not sure how to install gems that
aren't on RubyForge, here's the run-down:
$ wget http://exdolo.com/s3sync.gem
$ sudo gem install s3sync.gem
and you're good to go :)
NB: curl -O performs the same function as wget in
this instance, in case you don't have the wget binary
available on your system.