我编写了一个脚本来将 s3 对象从我的生产 s3 存储桶复制到我的开发存储桶,但是运行需要很长时间,因为我在复制之前单独检查每个对象是否存在。有没有办法区分两个桶并只复制我需要的对象?还是将存储桶作为一个整体进行复制?
这是我目前拥有的:
count = 0
puts "COPYING FROM #{prod_bucket} to #{dev_bucket}"
bm = Benchmark.measure do
AWS::S3.new.buckets[prod_bucket].objects.each do |o|
exists = AWS::S3.new.buckets[dev_bucket].objects[o.key].exists?
if exists
puts "Skipping: #{o.key}"
else
puts "Copy: #{o.key} (#{count})"
o.copy_to(o.key, :bucket_name => dev_bucket, :acl => :public_read)
count += 1
end
end
end
puts "Copied #{count} objects in #{bm.real}s"