命令行工具在S3中恢复已版本化的已删除文件?

时间:2014-09-12 15:03:19

标签: amazon-s3 data-protection s3cmd cloudberry

我在S3存储桶中启用了版本控制,如何使用命令行S3客户端恢复已删除的文件,例如s3cmd?如何浏览文件的不同版本?到目前为止,我已经向Freeware Cloudberry Windows Client退步以实现这一目标。我知道我也可以使用Boto Python library,但我更喜欢常用的命令行工具。

2 个答案:

答案 0 :(得分:2)

s3cmd 1.5.0-rc1此时对版本化文件的支持非常少。我相信它可以执行完整的桶删除,包括版本化文件,但这是对版本化文件的支持程度。

答案 1 :(得分:1)

使用此AWS CLI命令:(docs here):

aws s3api list-object-versions --bucket mybucket

这将返回对象列表,例如:

{
    "DeleteMarkers": [
        ...
    ],
    "Versions": [
        {
            "LastModified": "2015-11-17T12:25:01.000Z",
            "VersionId": "Mj1.PcWG8e.C._7LhvFU131pXJ98abIl",
            "ETag": "\"b76b2b775023e60be16bc332496f8409\"",
            "StorageClass": "STANDARD",
            "Key": "file1.txt",
            "Owner": {
                "DisplayName": "aws03005",
                "ID": "b09   0e41acbdf98bc34ef4781f10e4aeebb7a495b8be78da0db884af2980ed38d"
            },
            "IsLatest": true,
            "Size": 30318
        },
    ...
}

使用Key(文件名)和VersionId下载以前的版本:

aws s3api get-object --bucket mybucket --key file1.txt --version-id Mj1.PcWG8e.C._7LhvFU131pXJ98abIl foo.txt

如果您要删除已删除的文件,请注意您必须get-object Versions中列出的最新版本, {{1}中列出的版本}}

要在脚本中执行此操作,DeleteMarkers和/或jq可能有所帮助。