如何在Amazon S3存储桶中回滚到以前的版本?

时间:2018-01-17 03:51:11

标签: amazon-web-services amazon-s3 amazon

我通过以下方式上传文件夹/文件:

aws s3 cp files s3://my_bucket/
aws s3 cp folder s3://my_bucket/ --recursive

有没有办法返回/回滚到以前的版本?

像git revert或类似的东西?

更新: 这是我上传了4次的测试文件。

如何到达之前的版本(将其设为"最新版本")

例如,制作这个" 2018年1月17日12:48:13"或" 2018年1月17日12:24:30"  成为"最新版本"不是在gui而是使用命令行? enter image description here

3 个答案:

答案 0 :(得分:2)

没有。但是,为了防止将来出现这种情况,您可以在存储桶上启用版本控制,甚至可以配置存储桶以防止自动覆盖和删除。

enter image description here

要在存储桶上启用版本控制,请访问存储桶中的“属性”选项卡并将其打开。完成此操作后,存储桶中每个项目的副本或版本将包含版本元数据,您将能够检索已上载的对象的旧版本。

启用版本控制后,您将无法将其关闭。

编辑(更新我的更新问题的答案):

您无法以这种方式对对象进行版本化。您为每个对象提供了一个唯一的Key,因此S3将其视为一个新对象。您将需要为每个对象PUTS使用相同的密钥才能正确使用版本控制。实现此功能的唯一方法是从存储桶中获取所有对象,并以编程方式在密钥中查找最新日期。

编辑2:

https://docs.aws.amazon.com/AmazonS3/latest/dev/RestoringPreviousVersions.html

要恢复以前的版本,您可以:

  

版本控制的价值主张之一是检索能力   以前版本的对象。这样做有两种方法:

     

将对象的先前版本复制到同一个存储桶复制   object成为该对象和所有对象的当前版本   版本保留。

     

永久删除当前版本的对象删除时   当前对象版本,实际上,您将转换以前的版本   进入该对象的当前版本。

答案 1 :(得分:2)

以下是如何完成这项工作:

如果您正在使用cli,

https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html

获取所需版本的对象。

然后为下载的对象执行put对象。

https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html

您的旧S3对象现在将是最新的对象。

AWS S3对象是不可变的,您只能放置和删除。重命名是具有不同名称的同一对象的GET和PUT。

希望它有所帮助。

答案 2 :(得分:1)

S3允许您为存储桶启用版本控制。如果您已启用版本控制,则应该能够找回以前的版本。如果没有,那你就不走运了。

有关详细信息,请参阅以下页面:https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html