2011-08-12 26 views

Trả lời

2

Không có hoạt động 'Đổi tên' mặc dù nó sẽ tuyệt vời nếu có.

Thay vào đó, bạn cần phải lặp qua từng mục mà bạn muốn đổi tên, thực hiện sao chép vào đối tượng mới và sau đó xóa đối tượng cũ.

Lưu ý: đối với mục đích đơn giản tôi giả sử bạn không có versioning kích hoạt trên xô của bạn.

+2

Điều gì về việc sử dụng lệnh di chuyển 'mv'? –

+1

nghe có vẻ rất đau đớn! API dường như được tối ưu hóa để kiếm tiền, không phải để thuận tiện. – Tilo

9

Gần đây tôi đã gặp phải vấn đề tương tự. Tôi đã giải quyết nó bằng API dòng lệnh.

http://docs.aws.amazon.com/cli/latest/index.html http://docs.aws.amazon.com/cli/latest/reference/s3/mv.html

aws s3 mv s3://BUCKETNAME/myfolder/photos/ s3://BUCKETNAME/myotherfolder/photos/ --recursive --acl public-read 

Tôi đã có một nhu cầu cho các đối tượng người khác xem được, vì vậy tôi đã thêm các tùy chọn acl.

+1

IIRC, bạn sẽ bị tính phí cho mỗi lệnh sao chép và xóa rằng mv sẽ thực hiện ở chế độ nền, vì AWS không có lệnh "di chuyển", aws script sẽ giả sử sử dụng bản sao và sau đó xóa cho từng tệp đệ quy – higuita

+0

@ higuita Theo sự hiểu biết của tôi, không có cách nào thoát khỏi điều này. Di chuyển/Đổi tên không được cung cấp bởi AWS. – saurabheights

+0

Điều này đã lưu ngày của tôi để di chuyển 700.000 tệp vào một thư mục khác! – physicalattraction

0

Tôi đã gặp sự cố tương tự này và tôi đã sử dụng aws s3 mv cùng với vòng lặp bash for.

Tôi đã làm aws ls bucket_name để nhận tất cả các tệp trong nhóm. Sau đó, tôi quyết định những tập tin tôi muốn di chuyển và thêm chúng vào file_names.txt.

Sau đó, tôi chạy đoạn mã sau để di chuyển tất cả các tập tin:

for f in $(cat file_names.txt) 
do 
    aws s3 mv s3://bucket-name/$f s3://bucket-name/subfolder/$f 
done 
Các vấn đề liên quan