使用gsutil -m多线程删除桶内对象时,搭配**通配符报错如何解决?
解决gsutil -m rm 报错的问题
你的错误不是因为-m和**通配符不兼容,而是两个常见问题导致的:
- 你的shell自动展开了
**通配符,使得gsutil收到的参数不是预期的存储桶路径,而是本地文件列表; - 未正确引用路径时,部分环境下
**通配符无法被gsutil正确解析。
修复后的正确命令如下(用单引号包裹路径避免shell展开):
gsutil -m rm -a 'gs://dls-qa/**'
官方文档相关说明(翻译):
使用
gsutil rm删除存储桶内所有对象时,**通配符用于递归匹配所有层级的对象(包括子目录下的内容),但必须通过引号包裹路径,防止shell提前解析该通配符。-m选项启用多线程/多进程并行操作,专门用于提升大量对象的删除速度,它和**通配符完全兼容,只要命令语法正确就能正常工作。
另外,-a选项会删除对象的所有版本(当前版本和历史版本),如果仅需删除当前版本,可移除该选项。
内容的提问来源于stack exchange,提问作者dman
相关产品推荐
相关产品推荐

