Tôi cần phải sao chép tất cả các phím từ '/ old/dir /' sang '/ new/dir /' trong một thùng amazon S3. tôi đã đưa ra kịch bản này (nhanh hack):Làm thế nào để sao chép hiệu quả tất cả các tệp từ một thư mục này sang thư mục khác trong thùng chứa aazon S3 bằng boto?
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)
Đối với bây giờ nó đang làm việc nhưng là chậm hơn nhiều so với những gì tôi có thể làm bằng tay trong managment đồ họa giao diện điều khiển bởi chỉ cần sao chép/quá khứ với chuột. Rất bực bội và có rất nhiều chìa khóa để sao chép ...
Bạn có biết phương pháp nào nhanh hơn không? Cảm ơn.
Chỉnh sửa: có thể tôi có thể thực hiện việc này với các quy trình sao chép đồng thời. Tôi không thực sự quen thuộc với các phương pháp boto copy keys và có bao nhiêu tiến trình đồng thời tôi có thể gửi đến amazon.
Chỉnh sửa2: Tôi hiện đang học đa xử lý Python. Hãy xem liệu tôi có thể gửi 50 thao tác sao chép cùng lúc không ...
Chỉnh sửa 3: Tôi đã thử với 30 bản sao đồng thời bằng cách sử dụng mô-đun đa xử lý Python. Sao chép nhanh hơn nhiều so với giao diện điều khiển và ít bị lỗi hơn. Có một vấn đề mới với các tệp lớn (> 5Gb): boto đặt ra một ngoại lệ. Tôi cần phải gỡ lỗi này trước khi gửi kịch bản cập nhật.
Bạn đã thử REST-sao chép một đối tượng (http://docs.amazonwebservices.com/AmazonS3/latest/API/ RESTObjectCOPY.html? R = 7426)? Tôi sẽ thử nó, có lẽ nó nhanh hơn ... – Viccari
Tôi hy vọng boto đang gọi API này, nhưng tôi đã không kiểm tra – ascobol
Vì vậy, tôi :) Nhưng tôi đã học được cách cứng nó không làm tổn thương kiểm tra ... – Viccari