我對s3cmd很滿意,但有一個問題:如何將所有文件從一個S3存儲桶複製到另一個存儲區?它甚至有可能嗎?是否可以使用s3cmd將所有文件從一個S3存儲桶複製到另一個S3存儲桶?
編輯:我已經找到一種方法來使用Python與博託桶之間複製文件:
from boto.s3.connection import S3Connection
def copyBucket(srcBucketName, dstBucketName, maxKeys = 100):
conn = S3Connection(awsAccessKey, awsSecretKey)
srcBucket = conn.get_bucket(srcBucketName);
dstBucket = conn.get_bucket(dstBucketName);
resultMarker = ''
while True:
keys = srcBucket.get_all_keys(max_keys = maxKeys, marker = resultMarker)
for k in keys:
print 'Copying ' + k.key + ' from ' + srcBucketName + ' to ' + dstBucketName
t0 = time.clock()
dstBucket.copy_key(k.key, srcBucketName, k.key)
print time.clock() - t0, ' seconds'
if len(keys) < maxKeys:
print 'Done'
break
resultMarker = keys[maxKeys - 1].key
此同步,幾乎是直線前進的複製。有ETag字段,大小和上次修改的鍵可用。
也許這對別人也有幫助。
嘿,你可以讓你的編輯成爲答案並接受?這是一個非常有用的提示! – Hamish
你使用'get_all_keys'而不是'list'的任何原因? – BillR