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 written a line of Ruby before, but it seems like there are some great AWS libraries for it, so I decided to give it a shot. There is a cool library out there called right_aws. You can install it using
#gem install right_aws. Then simply copy this script:
#!/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.")
I know its pretty brutish, probably sucks in more ways than one, but for now it works. And I think I like Ruby :D