CLI复制后,文件元数据未保留在S3中

时间:2017-11-17 09:31:16

标签: amazon-web-services amazon-s3

我在不同地区有两个桶(比方说A和B)。我在存储桶A中存档了元数据(x-amz-meta-mymeta)。我使用CLI执行复制命令:

aws s3 cp s3://A/${file}.tar.gz s3://B/

根据文件,是否保留元数据。文件pikachu在复制后具有相同的元数据,但文件pika-chu在目标存储桶B中没有元数据。

我已阅读该文档,但找不到除this SO answer中公开的信息之外的任何其他信息。

即使目标文件已存在,元数据也会丢失。

有关于此的任何提示吗?

编辑:即使复制命令为

,元数据也会丢失
aws s3 cp s3://A/${file}.tar.gz s3://B/${file}

修改:有关信息,文件大小不同,pikachu只有几个Mb大,而pika-chu更像是50Mb。

修改:使用aws s3 cp上传文件,但不包含多部分信息。

2 个答案:

答案 0 :(得分:2)

以下是PUT COPY REST API的官方文档。

查看x-amz-metadata-directive。

REST Object Copy

对于CLI添加(仅对小于5 GB的文件有效且没有多部分复制/上传 - 多部分副本不保留所有标题):

--metadata-directive COPY
  

- metadata-directive(string)指定是从源对象复制元数据还是用复制时提供的元数据替换元数据   S3对象。请注意,如果将对象复制到部分中,则   无论值如何,都不会复制源对象的元数据   对于--metadata-directive,而不是所需的元数据值   在命令行中指定为参数。有效值为COPY   和REPLACE。如果未指定此参数,则将使用COPY   默认。如果使用REPLACE,则复制的对象将只有   CLI命令指定的元数据值。请注意,如果   您正在使用以下任何参数: - content-type,   内容语言, - 内容编码, - 内容 - 处置,   --cache-control或--expires,如果希望复制的对象具有指定的元数据值,则需要为非多部分副本指定--metadata-directive REPLACE。

[问题后编辑]

AWS CLI将自动使用分段上传。这是可配置的。此链接显示S3配置选项。

AWS CLI S3 Configuration

答案 1 :(得分:0)

大于5 GB的文件在复制时会丢失其元数据,请参阅https://github.com/aws/aws-sdk-java/issues/367