Skip to content

Instantly share code, notes, and snippets.

@paladiy
Created February 1, 2010 11:33
Show Gist options
  • Save paladiy/291623 to your computer and use it in GitHub Desktop.
Save paladiy/291623 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'aws/s3'
require 'optparse'
require 'logger'
options = {}
OptionParser.new do|opts|
options[:access_key_id] = ''
opts.on( '-a KEY', '--access_key_id KEY', 'access key id is KEY' ) do |key|
options[:access_key_id] = key
end
options[:secret_access_key] = ''
opts.on( '-s KEY', '--secret_access_key KEY', 'secret access key is KEY' ) do |key|
options[:secret_access_key] = key
end
options[:files] = ''
opts.on( '-p FILES', '--path FILES', 'Uploaded files path' ) do |file|
options[:files] = file
end
options[:log_file] = 'aws_s3_transfer.log'
opts.on( '-l FILES', '--log FILES', 'Log file' ) do |file|
options[:log_file] = file
end
options[:bucket] = 'video_server_backup'
opts.on( '-b BUCKET', '--bucket BUCKET', 'S3 bucket name' ) do |bucket|
options[:bucket] = bucket
end
end.parse!
files = Dir.glob(options[:files])
logger = Logger.new(options[:log_file])
AWS::S3::Base.establish_connection!(:access_key_id => options[:access_key_id], :secret_access_key => options[:secret_access_key])
files.each do |file|
logger.info("File #{file} upload started")
begin
AWS::S3::S3Object.store(file, open(file), options[:bucket])
rescue => e
logger.error(e.message)
end
logger.info("File #{file} upload ended")
end
AWS::S3::Base.disconnect!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment