2010-08-04 44 views
8

Đơn giản như âm thanh, nó có vẻ giống như một nhiệm vụ cực kỳ phức tạp.Làm thế nào để bạn đổi tên một thư mục trong một thùng trên S3?

+0

@ John, nếu bạn đã chỉnh sửa gì thì sao? – Trip

+0

Tôi tìm thấy CloudBerry dành cho cửa sổ hoạt động. Nhưng tôi ghét cửa sổ. Bất cứ ai biết một thay thế mac? – Trip

+0

Tôi có một kịch bản sẽ làm điều này - e-mail cho tôi (zach tại longtailvideo dot com) và tôi sẽ chuyển tiếp nó cùng. –

Trả lời

11

Nếu bạn đang sử dụng đá quý aws-s3, mã sau sẽ đổi tên thư mục OLD_FOLDER_NAME trong nhóm BUCKET_NAME thành NEW_FOLDER_NAME:

bsize = OLD_FOLDER_NAME.size 
bucket = AWS::S3::Bucket.find(BUCKET_NAME) 
bucket.objects({:prefix=>OLD_FOLDER_NAME}).each do |o| 
    AWS::S3::S3Object.rename(o.key, NEW_FOLDER_NAME + o.key[bsize..-1], BUCKET_NAME) 
end 

Vậy đó. Thư mục không phải là đối tượng thực, vì vậy tất cả những gì bạn phải làm là đổi tên tất cả các đối tượng kết thúc trong đường dẫn cụ thể đó sang đường dẫn mới. Thư mục ảo sẽ được đổi tên thành kết quả.

+0

Điều này đổi tên thư mục, tuy nhiên, nếu nội dung của thư mục được công khai, các quyền đó dường như bị mất trong quá trình đổi tên. – jpwynn

+0

thêm quyền rõ ràng làm tham số thứ 4 để đổi tên() đặt quyền: truy cập =>: public_read mặc dù có thể có một số cách để giữ quyền trong quá trình đổi tên – jpwynn

1

Sử dụng BucketExplorer! Đây là một ứng dụng tuyệt vời! Bạn có thể làm khá nhiều thứ bạn từng muốn làm cho s3 của mình theo cách rất dễ hiểu GUI

+0

Không thành thực, tôi vẫn mở cho các ý tưởng, nhưng đây là lựa chọn tốt nhất tôi tìm thấy. – Trip

+0

Tôi đồng ý không phải vì thực tế giải pháp này yêu cầu cài đặt Java7, có thể giới thiệu khá nhiều thay đổi cấp hệ thống chỉ đơn giản là đổi tên một thư mục. Quá xấu, họ không viết lại nó như là một ứng dụng 'thực' mà không có sự phụ thuộc lớn của các phụ thuộc java. – jpwynn

8

Có vẻ như AWS Command Line Interface là cách mới để thực hiện các công cụ như thế này. Sử dụng nó, bạn có thể đổi tên một thư mục như thế này:

aws s3 mv --recursive s3://bucketname/oldfoldername s3://bucketname/newfoldername 

Hãy chắc chắn và bắt đầu với các tùy chọn --dryrun để chắc chắn rằng nó sẽ làm những gì bạn nghĩ rằng nó sẽ làm.

1

Nếu bạn sử dụng Bảng điều khiển quản lý S3, bạn có thể cắt và dán. Đi vào thư mục bạn muốn, nhấp Ctrl + A, sau đó nhấp vào Tác vụ> Cắt. Tạo thư mục mới của bạn và nhấp vào Tác vụ> Dán.

Các vấn đề liên quan