2014-09-12 388 views

回答

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 

如果您是試用版ng得到一個刪除的文件,請注意,您必須get-object最新版本列在Versions,不是DeleteMarkers中列出的一個。

要在腳本中執行此操作,--query和/或jq可能會有所幫助。

+0

你是對的,更好的方法是使用[由亞馬遜開發的官方工具](https:// aws.amazon.com/cli/)。無論如何,[s3cmd](https://sourceforge.net/projects/s3tools/files/s3cmd/)的開發似乎已經枯竭。 – 2016-10-10 18:50:49

1

s3cmd 1.5.0-rc1目前對版本化文件的支持很少。我相信它可以執行完整的桶刪除,包括版本化文件,但這是對版本化文件的支持程度。

+0

我相信你是指這個拉請求https://github.com/s3tools/s3cmd/pull/345 – 2014-09-14 17:40:45