Simple S3 Backup Script
require 'rubygems'
require 'aws/s3'
require 'date'
require 'pathname'
include AWS::S3
if ARGV.length == 0
abort "You need to specify a file"
end
AWS::S3::Base.establish_connection!(
:access_key_id => 'ACCESS_KEY',
:secret_access_key => 'SECRET_ACCESS_KEY'
)
bucket_file_name = ARGV[0] + "-" + DateTime.now.strftime('%Y-%m-%d-%H-%M-%S')
S3Object.store(Pathname.new(bucket_file_name).basename.to_s, open(ARGV[0]), 'backups')
for_deletion = []
Bucket.objects('backups').each do |file|
if file.key.match /(.*)-(\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2})/
file_name = $1
file_date = DateTime.strptime($2, '%Y-%m-%d-%H-%M-%S')
if file_name == ARGV[0] && file_date <= DateTime.now.prev_month
for_deletion << file
end
end
end
for_deletion.each do |file_to_delete|
file_to_delete.delete
end