0

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

4

2 回答 2

2

s3cmd 1.5.0-rc1 目前对版本化文件的支持很少。我相信它可以进行完整的存储桶删除,包括版本化文件,但这就是它对版本化文件的支持程度。

于 2014-09-13T13:47:28.457 回答
1

使用此 AWS CLI 命令:(此处的文档):

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而不是中列出的版本DeleteMarkers

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

于 2015-11-17T13:04:51.433 回答