2017-01-19 23 views
5

Giả sử tôi có thùng S3 có tên x.y.zCách xóa nhiều tệp trong thùng S3 với AWS CLI

Trong nhóm này, tôi có hàng trăm tệp. Nhưng tôi chỉ muốn xóa 2 tệp có tên purple.gifworksheet.xlsx

Tôi có thể thực hiện việc này từ công cụ dòng lệnh AWS chỉ với một cuộc gọi đến rm?

này đã không làm việc:

$ aws s3 rm s3://x.y.z/worksheet.xlsx s3://x.y.z/purple.gif 
Unknown options: s3://x.y.z/purple.gif 

Từ manual, nó không có vẻ như bạn có thể xóa một danh sách các tập tin một cách rõ ràng theo tên. Có ai biết cách để làm điều đó không? Tôi không thích sử dụng cờ --recursive.

Trả lời

7

Bạn không thể sử dụng s3 rm, nhưng bạn có thể sử dụng s3api delete-objects:

aws s3api delete-objects --bucket x.y.z --delete '{"Objects":[{"Key":"worksheet.xlsx"},{"Key":"purple.gif"}]}' 
+0

công trình như một say mê :) –

5

Bạn có thể làm điều này bằng cách cung cấp một --exclude hoặc --include tranh cãi nhiều lần. Tuy nhiên, bạn sẽ phải sử dụng --recursive để làm việc này.

Khi có nhiều bộ lọc, hãy nhớ rằng thứ tự của thông số bộ lọc là quan trọng. Quy tắc là các bộ lọc xuất hiện sau này trong lệnh được ưu tiên hơn các bộ lọc xuất hiện trước đó trong lệnh.

aws s3 rm s3://x.y.z/ --recursive --exclude "*" --include "purple.gif" --include "worksheet.xlsx" 

Ở đây, tất cả các file sẽ được loại trừ khỏi lệnh trừ purple.gifworksheet.xlsx.

Nguồn: Use of Exclude and Include Filters

0

Tôi thấy điều này hữu ích thông qua dòng lệnh. Tôi đã có hơn 4 triệu tệp và mất gần một tuần để làm trống thùng. Điều này có ích khi bàn điều khiển AWS không mô tả bằng nhật ký.

Lưu ý: Bạn cần cài đặt jquery

aws s3api list-object-versions --bucket YOUrBUCKEtNAMeHERe-processed --output json --query 'Versions[].[Key, VersionId]' | jq -r '.[] | "--key '\''" + .[0] + "'\'' --version-id " + .[1]' | xargs -L1 aws s3api delete-object --bucket YOUrBUCKEtNAMeHERe 
Các vấn đề liên quan