编程语言
首页 > 编程语言> > php-在Amazon S3上大规模还原以前的版本

php-在Amazon S3上大规模还原以前的版本

作者:互联网

所以.我是个白痴.星期五,我以编程方式重写了一个存储桶中的约14,000个文件,直到今天才意识到这一点.幸运的是,文件已版本化.不幸的是,我找不到一个很好的清晰示例,说明如何编写脚本来遍历文件,然后还原第二个最新版本.我一直在浏览Boto文档,并且了解如何删除版本,但无法恢复.如果有人可以给我一些显示如何还原特定版本的代码,我很喜欢使用php或python.

解决方法:

这是需要您一定注意的事情.我不想尝试为您提供完整的解决方案,因为我没有时间对其进行全面测试,也不想做出任何承诺.

但是,这可能会有所帮助.

首先,假设我们要在boto的特定存储桶中找到特定密钥的所有版本.我们可以这样做:

import boto

conn = boto.connect_s3()
bucket_name = 'mybucket'
key_name = 'mykey'

bucket = conn.lookup(bucket_name)
for k in bucket.list_versions(key_name):
    print(k.name, k.version_id, k.last_modified)

这应该打印出这样的内容:

mykey TyvPH4UUD4zRnGhmmLH6HGHOcOnsJgQG 2013-03-03T19:10:39.000Z
mykey IxNYlmoyDsOSspR6SwuGVNM7Nr83ZTSI 2013-03-03T15:11:06.000Z
mykey XVI9_yxQYU6B2KXQv0VLj7luYOGwWCoh 2013-03-03T15:10:55.000Z
mykey qh0zjxWjRC8WvXQc_RmvVdCJ.S3gF2ui 2013-03-03T15:07:46.000Z

假设我们要“还原”最旧的文件.为此,我们实际上将所需版本的对象复制回自身.在boto中,它看起来像这样:

bucket.copy_key(new_key_name=key_name, src_bucket_name=bucket_name, src_key_name=key_name, src_version_id='qh0zjxWjRC8WvXQc_RmvVdCJ.S3gF2ui')

这会将指定版本的密钥复制到同一存储桶中.

我认为您必须对此进行一些探索并进行大量测试,然后才能松开脚本.例如,您可以尝试将所需版本的对象复制到另一个存储桶中,然后在复制到所需存储桶之前查看是否获得了所需的东西.

希望这可以帮助.

标签:amazon-web-services,amazon-s3,boto,python,php
来源: https://codeday.me/bug/20191031/1972329.html