是否可以通过 AWS CLI 或某些第三方工具轻松下载特定日期时间的版本化存储桶的所有内容?
即我想要检索存储桶中每个对象的版本,该版本在给定日期被视为“最新”版本。
答案1
看看aws 命令行,我只看到版本控制功能公开在s3api部分,不在s3部分。
据我所知,只能根据对象的版本 ID 来获取其先前版本。
默认情况下,GET 操作会返回对象的当前版本。要返回其他版本,请使用 versionId 子资源。
看http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html获取示例和其他详细信息
为了解决您的要求,我的理解是,除非您自己一直在跟踪版本 ID,否则您需要先获取版本列表以确定要获取哪些版本。
您可以使用版本子资源列出存储桶中所有对象版本的元数据。您还可以使用请求参数作为选择条件来返回所有对象版本子集的元数据。
看http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETVersion.html了解详情。
对于与您的查询匹配的每个版本,该响应将包含如下数据:
<Version>
<Key>my-image.jpg</Key>
<VersionId>3/L4kqtJl40Nr8X8gdRQBpUMLUo</VersionId>
<IsLatest>true</IsLatest>
<LastModified>2009-10-12T17:50:30.000Z</LastModified>
<ETag>"fba9dede5f27731c9771645a39863328"</ETag>
<Size>434234</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
<DisplayName>[email protected]</DisplayName>
</Owner>
</Version>
对于 aws cli 来说,这将是aws s3api get-object --version-id ...
和aws s3api list-object-versions ...
分别针对上面提到的 API 调用。