Мне нужно скопировать все ключи из / old / dir / в / new / dir в амазонку S3.
Я придумал этот скрипт (быстрый взлом):
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 и с тем, сколько параллельных процессов я могу отправить amazon.
Edit2: я сейчас изучаю многопроцессорность Python. Посмотрим, смогу ли я отправить 50 операций копирования одновременно ...
Редактировать 3: я пытался с 30 параллельными копиями с использованием модуля многопроцессорной обработки Python. Копирование было намного быстрее, чем в консоли, и менее подвержено ошибкам. Существует новая проблема с большими файлами (> 5 ГБ): boto вызывает исключение. Мне нужно отладить это перед публикацией обновленного скрипта.