nasıl

2017-01-19 29 views
5
varsayalım Bir S3 kova bu kova

nasıl

x.y.z adında var, dosyaları yüzlerce var

AWS CLI ile S3 kova birden fazla dosya silmek için. Ama sadece purple.gif ve worksheet.xlsx

adında 2 dosyayı silmek istiyorum. Bunu, AWS komut satırı aracından rm tek bir aramayla yapabilir miyim?

Bu işe yaramadı: Eğer adıyla açıkça dosyaların bir listesini silebilirsiniz gibi

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

manual itibaren, görünmüyor. Bunu yapmak için bir yol bilen var mı? --recursive bayrağını kullanmayı tercih etmiyorum.

cevap

7

Sen s3 rm kullanmayan, ancak s3api delete-objects kullanarak yapabilirsiniz:

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

eser yüklü gerek :) –

5

Bunu yapabilirsin bir --exclude veya --include argüman birden çok kez sağlayarak. Ancak, bunun çalışması için --recursive kullanmanız gerekecek.

Birden çok filtre olduğunda, filtre parametrelerinin sırasının olduğunu unutmayın. . Kural, daha sonra komut içinde daha önce görünen filtrelerden önce komutlarda öncelikli olarak görünen filtrelerdir. İşte

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

, tüm dosyalar purple.gif ve worksheet.xlsx hariç komutu dışında tutulacaktır.

Kaynak:

0

Use of Exclude and Include Filters Ben komut satırı kullanışlı bunu gördük. 4 milyondan fazla dosyam vardı ve kovayı boşaltmak neredeyse bir hafta sürdü. Bu, AWS konsolu kayıtlarla açıklayıcı olmadığından kullanışlı olur.

Not: jQuery bir cazibe gibi

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