【发布时间】:2021-01-10 12:37:45
【问题描述】:
它在 aws cli 的文档中说不支持通配符。您可以使用 --include 和 --exclude 选项。但是当文件结构很宽时,这可能需要一段时间。
aws s3 rm s3://your-bucket/your-folder/year=2020/month=05/ --exclude "*" --include "*/provider=400/qk=0001" --include "*/provider=400/qk=0002" --include "*/provider=400/qk=0003" --include "*/provider=400/qk=0010" ...
那么还有哪些其他选择?
【问题讨论】:
-
“可能需要一段时间”是什么意思?您的意思是开始删除之前需要一些时间,还是因为它需要删除这么多对象?还是写命令太长?您只是想删除
provider=400/下的所有内容吗?如果是这样,你不能只使用--include "*/provider=400/*"吗? -
@JohnRotenstein 我在 provider=400 下有 100 个 qk 子键,我需要删除其中的 40 个。 --include 和 --exclude 确实 listObjects (我假设),每个 qk 大约有 200 个文件,一个月需要一段时间
-
如果您需要有选择性(例如只删除某些子文件夹),那么您的方法很好。或者,您可以使用 AWS 开发工具包(例如 Python 脚本)的解决方案列出给定前缀下的内容,然后使用
delete_objects()。另一种方法是配置 Amazon S3 生命周期规则以删除对象,但我不确定它是否可以接受 40 个不同的子文件夹。不必担心删除对象所用的时间——您可以在一夜之间运行它,甚至可以在多个线程和实例上并行运行。欢迎来到大数据!
标签: amazon-web-services command-line-interface rm