gpt4 book ai didi

python - 如何使用 boto 有效地将所有文件从一个目录复制到另一个目录中的 amazon S3 存储桶中?

转载 作者:太空狗 更新时间:2023-10-30 01:35:06 24 4
gpt4 key购买 nike

我需要将所有 key 从“/old/dir/”复制到 amazon S3 存储桶中的“/new/dir/”。我想出了这个脚本(快速破解):

import boto

s3 = boto.connect_s3()
thebucket = s3.get_bucket("bucketname")
keys = thebucket.list('/old/dir')
for k in keys:
newkeyname = '/new/dir' + k.name.partition('/old/dir')[2]
print 'new key name:', newkeyname
thebucket.copy_key(newkeyname, k.bucket.name, k.name)

目前它正在运行,但比我在图形管理控制台中通过鼠标复制/粘贴手动执行的操作要慢得多。非常令人沮丧,有很多键要复制...

你知道更快的方法吗?谢谢。

编辑:也许我可以使用并发复制进程来做到这一点。我不太熟悉 boto 复制 key 方法以及我可以发送给亚马逊的并发进程数。

Edit2:我目前正在学习 Python 多处理。让我们看看我是否可以同时发送 50 个复制操作...

编辑 3:我尝试使用 Python 多处理模块处理 30 个并发副本。复制比在控制台内复制要快得多,而且更不容易出错。大文件 (>5Gb) 有一个新问题:boto 引发异常。在发布更新的脚本之前,我需要对此进行调试。

最佳答案

关于文件超过 5GB 的问题:S3 不支持使用 PUT 方法上传超过 5GB 的文件,这是 boto 试图做的( see boto sourceAmazon S3 documentation )。

不幸的是,除了下载它并在分段上传中重新上传之外,我不确定如何解决这个问题。我认为 boto 还不支持多部分复制操作(如果存在的话)

关于python - 如何使用 boto 有效地将所有文件从一个目录复制到另一个目录中的 amazon S3 存储桶中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9219318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com