簡體   English   中英

如何使用boto在亞馬遜S3存儲桶中有效地將所有文件從一個目錄復制到另一個目錄?

[英]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 sourceAmazon S3文檔 )。

不幸的是,除了下載和重新上傳多部分上傳之外,我不確定如何解決這個問題。 我不認為boto支持多部分復制操作(如果這樣的事情甚至存在)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM