You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS CLI仅删除AWS存储桶内的日志文件

完全可以通过AWS CLI实现仅删除桶内日志文件、不触碰其他文件/文件夹的需求,核心是靠include/exclude规则精准匹配文件,配合操作前的多轮校验杜绝误删,具体操作流程如下:

前置检查
  • 提前在本地装好AWS CLI,配置好的IAM账号需要持有目标桶的s3:ListBucket、s3:DeleteObject操作权限,提前复制好目标存储桶的准确名称,避免选错桶。
  • 所有删除操作执行前必须做预览校验,这是防误删最关键的步骤,绝对不能跳过。
具体操作步骤

1. 配置匹配规则并预览待删文件

AWS S3 CLI的规则逻辑是默认匹配所有对象,后写的规则会覆盖前面的规则,所以我们先写--exclude "*"排除所有文件,再通过--include逐个匹配日志文件的特征,常见的日志文件后缀为.log、.log.gz(多数AWS服务生成的日志为gzip压缩格式),如果你有自定义的日志命名规则(比如固定存放在logs/前缀下、后缀为.access.log等),可以自行追加include规则。
先执行列表命令预览所有匹配到的文件:

# 将your-bucket-name替换为你自己的存储桶名称
aws s3 ls s3://your-bucket-name --recursive --exclude "*" --include "*.log" --include "*.log.gz"

如果你的日志统一存放在某个固定路径下,比如桶内的operation-logs/文件夹,可以直接将路径写为s3://your-bucket-name/operation-logs/,进一步缩小匹配范围,就算规则写错也不会影响其他路径的文件。

仔细核对命令输出的文件列表,确认里面全是需要删除的日志文件,没有其他业务文件,如果发现有非日志文件被匹配到,立刻调整include规则重新预览,直到列表完全符合预期。

2. 模拟删除二次校验

列表核对通过后,执行带--dryrun参数的删除命令做最后一次模拟,这个操作不会真的删除文件,只会输出所有将要被删除的对象路径:

aws s3 rm s3://your-bucket-name --recursive --exclude "*" --include "*.log" --include "*.log.gz" --dryrun

再次核对模拟输出的文件列表,确认没有误匹配的内容。

3. 执行真实删除

模拟校验通过后,去掉--dryrun参数执行命令,就会删除所有匹配到的日志文件,不会触碰其他任何文件或文件夹:

aws s3 rm s3://your-bucket-name --recursive --exclude "*" --include "*.log" --include "*.log.gz"
注意事项
  • 绝对不能漏写--exclude "*"参数:如果缺少这个参数,--recursive模式会遍历删除桶内所有对象,造成严重的数据丢失。
  • 如果你的存储桶开启了版本控制,上述命令只会删除日志文件的当前版本,历史版本的日志需要单独指定版本ID删除,未开启版本控制的普通存储桶不受影响。
  • 不要为了图快跳过预览和dryrun步骤,两次校验加起来花不了1分钟,能帮你避免绝大多数误删事故。

内容的提问来源于stack exchange,提问作者Benzine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 16:31:06