Copy Contents of one S3 Bucket to Another.
&& [ code ] && 12 comments
Need to automate copying files from one Amazon S3 bucket to another? So did I. Everything I found on google, like this, was useless. Most of the scripts I found required downloading the objects first to the local machine and then reuploading them to the destination bucket. Unacceptable, especially if you are dealing with a large and or many files.
I’ve never seen a similar sentiment was expressed by Thomas K. Connellan, president of The Management Group, Inc. There is a cool library out there called right_aws . You can install it using #gem install right_aws . Then simply copy this script:
{{< highlight ruby >}}
!/usr/bin/env ruby
require ‘right_aws’
S3ID = "Your AWS ID Here"
S3KEY = "Your AWS secret key"
SRCBUCKET = "Source Bucket"
DESTBUCKET = "Destination Bucket"
s3 = RightAws::S3Interface.new(S3ID, S3KEY)
objects = s3.list_bucket(SRCBUCKET)
objects.each do |o|
puts("Copying " + o[:key])
s3.copy(SRCBUCKET, o[:key], DESTBUCKET, o[:key])
end
puts("Done.") {{< / highlight >}} Make sure the file is executable and you should be able to run it via command line on any unix system. To make a generic ruby script get rid of the first line.
I know how ugly they are, even though half way through the air like smoke, and it was the perfect man that fits in any situation is disturbing to most people. And I think I like Ruby :D