是否有命令行方式可以从 Glacier 恢复数据?
到目前为止,我已经尝试过:
s3cmd restore --recursive s3://mybucketname/folder/
aws s3 ls s3://<bucket_name> | awk '{print $4}' | xargs -L 1 aws s3api restore-object --restore-request Days=<days> --bucket <bucket_name> --key
但是,没有帮助。
PS:我知道我们可以通过控制台来做到这一点。
最佳答案
您可以使用较低级别的 aws s3api
命令:
aws s3api restore-object --request-payer requester \
--key path/to/key.blob \
--bucket my-bucket \
--cli-input-json "$(cat request.json)"
然后在
request.json
中设置您的参数, 例如:{
"RestoreRequest": {
"Days": 1,
"GlacierJobParameters": {
"Tier": "Standard"
}
}
}
启动恢复请求后,您必须调用
head-object
确定其恢复状态:aws s3api head-object --key path/to/key.blob \
--bucket my-bucket \
--request-payer requester
{
"AcceptRanges": "bytes",
"Restore": "ongoing-request=\"true\"",
"LastModified": "Thu, 30 May 2019 22:43:48 GMT",
"ContentLength": 1573320976,
"ETag": "\"5e9bae0592655103e72d0c026e643184-94\"",
"ContentType": "application/x-gzip",
"Metadata": {
"digest-md5": "7ace7afadfaec591a7dcff2b942df701",
"import-digests": "md5"
},
"StorageClass": "GLACIER",
"RequestCharged": "requester"
}
当
Restore
包含,ongoing-request="false"
,恢复将完成。 S3 中的临时副本将持续您在 restore 命令中指定的持续时间。 StorageClass
总是 GLACIER
(或 DEEP_ARCHIVE)用于任何恢复的文件,即使在恢复完成后也是如此。这是不直观的。如果您希望将该副本永久恢复到 S3 中,即,将存储类别从 GLACIER 更改为 STANDARD,则您需要将恢复的副本(可能覆盖其自身)放入/复制到一个新文件中。这很烦人。
有关的:
注意:
--request-payer requester
是可选的。我在我的设置中使用它,但如果您是存储桶的所有者,则不需要它。
关于amazon-web-services - 从 Amazon Glacier 恢复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670519/