Copies data from the current object to another object in S3.
S3 handles the copy so the client does not need to fetch the
data and upload it again. You can also change the storage
class and metadata of the object when copying.
# With s3 being an S3 object acquired via S3Interface.new
# Copies key1 from bucket b1 to key1_copy in bucket b2:
s3.copy('b1', 'key1', 'b2', 'key1_copy')
9条答案
按热度按时间3qpi33ja1#
**AWS-SDK gem。**S3Object#Copy_To
它使用COPY_OBJECT内部方法,因此复制功能允许您在S3存储桶内或之间复制对象,并可选择在进程中替换与对象关联的元数据。
标准方式(下载/上传)
复制方式
代码示例:
hpcdzsge2#
使用
right_aws
宝石:我遇到的问题是,如果你有
pics/1234/yourfile.jpg
,bucket
只有pics
,key
是1234/yourfile.jpg
我从这里得到答案:How do I copy files between buckets using s3 from a rails application?
gojuced73#
对于任何仍在寻找的人,AWS都有关于这方面的文档。实际上,
aws-sdk
宝石非常简单:rn0zuynd4#
在使用AWS SDK gem的COPY_FROM或COPY_TO时,默认情况下不会复制三项内容:ACL、存储类或服务器端加密。您需要将它们指定为选项。
Https://github.com/aws/aws-sdk-ruby/blob/master/lib/aws/s3/s3_object.rb#L904
dzhpxtsq5#
使用
aws-sdk
gem可以轻松复制多个镜像,如下所示:如果您的图像太多,建议将复制过程放在后台作业中。
vlju58qv6#
下面是一个简单的Ruby类,用于将所有对象从一个存储桶复制到另一个存储桶:https://gist.github.com/edwardsharp/d501af263728eceb361ebba80d7fe324
rkttyhzu7#
我认为,为了在存储桶之间进行复制,您必须从源存储桶中读取文件的内容,然后通过应用程序的内存空间将其写回目标存储桶。有一个使用
aws-s3
here的代码片段和另一个使用right_aws
here的方法dwthyt8l8#
AWS-S3 gem无法在不将文件移动到本地计算机的情况下在存储桶之间复制文件。如果这对你来说是可以接受的,那么下面的方法将会奏效:
zd287kbt9#
我遇到了与您相同的问题,所以我克隆了AWS-S3的源代码,并创建了一个分支,其中包含一个
copy_to
方法,该方法允许在存储桶之间进行复制,我一直将其捆绑到我的项目中,并在需要该功能时使用。希望其他人也会发现这一点很有用。View the branch on GitHub.