Amazon-Web-Services
僅刪除具有給定前綴的 S3 文件
我們有一個包含超過 500,000 個對象的儲存桶。
我被分配了一份工作,我必須刪除具有特定前綴的文件。儲存桶中有大約 300,000 個具有給定前綴的文件。
例如 ,如果有 3 個文件
abc_1file.txt abc_2file.txt abc_1newfile.txt
我只需要刪除帶有 abc_1 前綴的文件。我在與此相關的 AWS 文件中沒有找到太多內容。
關於如何實現自動化的任何建議?
您可以使用
aws s3 rm
命令--include
和--exclude
參數來指定要刪除的文件的模式。因此,在您的情況下,命令將是:
aws s3 rm s3://bucket/ --recursive --exclude "*" --include "abc_1*"
這將刪除儲存桶中與“abc_1*”模式匹配的所有文件。
這些參數的行為記錄在這裡
這些說明假定您已下載、安裝和配置AWS CLI 工具
作為對@sippybear 出色答案的補充,如果有人有一個包含一萬億個對象的儲存桶並且想要刪除的文件的模式包括“父目錄”,我會推薦以下內容,例如
'my/path/to/topdir/abc_1*'
:aws s3 rm --dryrun --recursive --exclude '*' --include 'abc_1*' s3://mybucket/my/path/to/topdir/
為什麼?
- 這會將要刪除的對象的搜尋限制在父目錄中,從而大大加快了操作速度;
- 真的,幫自己一個忙,從 開始
--dryrun
,即使你立即打斷它(ctrl-C
);在刪除儲存桶中的大量文件時會發生拼寫錯誤和其他事故,並且錯誤可能會非常令人遺憾(即使您有適當的備份)…一旦您對即將刪除的內容感到滿意,然後刪除
--dryrun
.