Jestem całkiem zadowolony z s3cmd, ale jest jeden problem: jak skopiować wszystkie pliki z jednego wiadra S3 do drugiego? Czy to możliwe?Czy można kopiować wszystkie pliki z jednego zasobnika S3 na drugie z s3cmd?
EDIT: Znalazłem drogę do kopiowania plików między wiadrami wykorzystaniem Pythona w boto:
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
Synchronizacja jest prawie tak proste jak kopiowanie. Istnieją pola dla ETag, rozmiaru i ostatniej modyfikacji dostępne dla kluczy.
Może to również pomaga innym.
Hej, czy mógłbyś dokonać edycji w odpowiedzi i zaakceptować? To naprawdę pożyteczna wskazówka! – Hamish
jakiejkolwiek przyczyny używasz 'get_all_keys' zamiast "listy"? – BillR