在Amazon的S3上批量恢复以前的版本

2024-09-25 00:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

所以。我是个白痴。上周五,我在一个桶里以编程方式重写了大约14000个文件,直到今天才意识到这一点。幸运的是,这些文件是有版本的。不幸的是,我找不到一个好的清晰的例子来说明如何编写一个脚本来遍历文件,然后恢复第二个最新版本。我已经看过了Boto文档,知道了如何删除版本,而不是恢复。如果有人能给我一点代码来演示如何恢复一个特定的版本,我会很舒服地使用php或python。在


Tags: 文件代码文档版本脚本编程方式boto
1条回答
网友
1楼 · 发布于 2024-09-25 00:22:37

这件事需要你小心。我不想给你提供一个完整的解决方案,因为我没有时间彻底测试它,我也不想做出任何承诺。在

然而,也许这会有所帮助。在

首先,让我们假设我们想要在boto中的特定bucket中找到某个密钥的所有版本。我们可以这样做:

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)

这应该打印出如下内容:

^{pr2}$

假设我们要“恢复”最旧的文件。为此,我们实际上将所需的对象版本复制回自身。在博图,这将是这样的:

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

这将把指定版本的密钥复制回同一个bucket中。在

我想你得先研究一下这个问题,然后再做大量的测试。例如,您可以尝试将所需版本的对象复制到另一个bucket中,然后在复制到所需的bucket之前查看是否获得了所需的内容。在

希望这有帮助。在

相关问题 更多 >