如何通过CLI对超过1000个对象使用aws s3同步

时间:2019-08-21 18:01:57

标签: amazon-web-services amazon-s3 aws-cli

我正在尝试使用aws-cli s3 sync或aws-cli s3 cp --recursive将S3存储桶(实际上是数字海洋空间)的内容同步到本地硬盘上

我尝试同时使用aws-cli synccp命令,但是都在1000个对象之后停止。我知道sync提到它使用--page-size标志(https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)限制为1000个对象,但是似乎我所看到的所有内容都涉及到同步整个存储桶,但是我的同步在1000个对象处停止了, 700万个要同步。

aws s3 cp s3://MYBUCKET ~/Documents/temp_space --source-region https://sfo2.digitaloceanspaces.com --profile MYPROFILE --endpoint=https://sfo2.digitaloceanspaces.com --recursive

aws sync cp s3://MYBUCKET ~/Documents/temp_space --source-region https://sfo2.digitaloceanspaces.com --profile MYPROFILE --endpoint=https://sfo2.digitaloceanspaces.com

我希望能够同步整个存储桶,而不仅仅是同步1000个对象。

2 个答案:

答案 0 :(得分:0)

“‘page_size’’参数限制数量或导致请求,而不是总数。

例如,在您的目录中包含要复制到s3存储桶的5,000个对象的情况下。您的命令类似于aws s3 cp . s3://your-bucket。这会将当前目录的所有内容(5,000个对象)复制到s3存储桶中。

默认(且最大)—page-size是1,000个对象,因此,因为我们没有指定—page-size,为了完成将所有5,000个对象复制到您的s3存储桶中,在幕后, AWSCLI将处理5个请求(5 x 1,000个对象)以复制所有5,000个对象。

通常,您应该能够简单地忽略此可选参数并运行aws s3 cpaws s3 sync而不会出现问题。如果您遇到请求超时的问题,则可以添加一个值小于1,000的—page-size参数来解决超时问题。

答案 1 :(得分:0)

简而言之,您可以使用https://github.com/s3tools/s3cmd来替换aws cli。

s3列表对象API的v1最多返回1000个条目,并且marker可用于下一个查询。但是aws cli s3 sync由于某些原因不支持marker

https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html

s3列表对象API的v2使用ContinuationToken来代替markeraws cli与v2更好地兼容。

https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html

对于DigitalOcean,当前不支持版本2列表类型。

所以您必须使用s3cmd。