我正在尝试使用aws-cli s3 sync或aws-cli s3 cp --recursive将S3存储桶(实际上是数字海洋空间)的内容同步到本地硬盘上
我尝试同时使用aws-cli sync
和cp
命令,但是都在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个对象。
答案 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 cp
或aws 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
来代替marker
。 aws cli
与v2更好地兼容。
https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html
对于DigitalOcean,当前不支持版本2列表类型。
所以您必须使用s3cmd。