![](/img/trans.png)
[英]How to use python script to copy files from one bucket to another bucket at the Amazon S3 with boto
[英]How to efficiently copy all files from one directory to another in an amazon S3 bucket with boto?
我需要在亞馬遜S3存儲桶中將所有鍵從'/ old / dir /'復制到'/ 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復制密鑰方法以及我可以向亞馬遜發送多少並發進程。
Edit2:我正在學習Python多處理。 讓我們看看我是否可以同時發送50個復制操作......
編輯3:我嘗試使用Python多處理模塊進行30個並發復制。 復制速度比控制台內快得多,並且不易出錯。 大文件存在新問題(> 5Gb):boto引發異常。 我需要在發布更新的腳本之前調試它。
關於5GB以上文件的問題:S3不支持使用PUT方法上傳超過5GB的文件,這是boto嘗試做的事情( 參見boto source , Amazon S3文檔 )。
不幸的是,除了下載和重新上傳多部分上傳之外,我不確定如何解決這個問題。 我不認為boto支持多部分復制操作(如果這樣的事情甚至存在)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.