Amazon S3をバックアップストレージとして使おう
S3は、
そこで今回は、
なお、
Rubyライブラリaws-s3の導入
RubyからS3を操作するライブラリは複数用意されていますが、
aws-s3はRubyGemsで提供されていますので、
# gem install aws-s3
バケット一覧の取得
まずは練習として、
#!/usr/bin/env ruby
require 'rubygems'
require 'aws/s3'
include AWS::S3
Base.establish_connection!(
:access_key_id => '<Access Key Id>',
:secret_access_key => '<Secret Access Key>'
)
p Service.buckets
AWS::S3::Service.
$ ruby ls_buskets.rb [#<AWS::S3::Bucket:0x4371c8 @attributes={"name"=>"webdbpress", "creation_date"=>Mon Jan 07 17:53:37 UTC 2008}, @object_cache=[]>]
ファイル一覧の取得
もう一つ練習として、
#!/usr/bin/env ruby
require 'rubygems'
require 'aws/s3'
include AWS::S3
Base.establish_connection!(
:access_key_id => '<Access Key Id>',
:secret_access_key => '<Secret Access Key>'
)
bucket = Bucket.find('webdbpress')
bucket.objects.each do |object|
puts object.key
end
$ ruby ls_webdbpress.rb yun_3263.jpg
このように、
ファイルの保存
ではいよいよバックアップアプリケーションを作りましょう。
S3へのファイルの保存も簡単です。S3Objectクラスを通じてファイル名とバケット名を指定すると、
リスト3は、
#!/usr/bin/env ruby
require 'rubygems'
require 'aws/s3'
require 'tempfile'
include AWS::S3
Base.establish_connection!(
:access_key_id => '<Access Key Id>',
:secret_access_key => '<Secret Access Key>'
)
bucket_name = 'webdbpress'
folder = '/Users/masuidrive/tmp/webdbpress-ec2'
tempfile = Tempfile.open(bucket_name)
tempfile.close
system "tar", "cfz", tempfile.path, folder
key = '%s.tar.gz' % Time.now.strftime("%Y%m%d%H%M%S")
S3Object.store(key, tempfile.open, bucket_name)
puts "Backup to %s/%s", bucket_name, key
このスクリプトを実行してみましょう。ちょっと時間が経つと、
$ ruby backup_s3.rb Backup to webdbpress/20080108050937.tar.gz
これが実際に保存されているか、

バックアップメディアの管理は難しいものですが、