如何通过doctl筛选并删除创建超过X天的DigitalOcean Droplet?
DigitalOcean Droplet 按创建时间筛选并删除的方案
doctl 本身没有为 compute droplet list 或 compute droplet delete 命令提供直接按创建时间筛选的内置过滤器,但可以通过结合 shell 命令和文本处理工具实现需求。
具体实现步骤
获取可处理的Droplet数据
使用doctl输出包含Droplet ID和创建时间的CSV格式数据,方便后续筛选:doctl compute droplet list --format ID,CreatedAt --no-header --output csv编写脚本筛选并删除旧Droplet
通过计算目标时间阈值,筛选出创建时间早于该阈值的Droplet ID,再批量删除。以下是bash环境下的示例脚本:# 计算1天前的UTC时间(匹配doctl输出的ISO 8601格式) # 注意:macOS系统请替换date命令为:date -v -1d -u +"%Y-%m-%dT%H:%M:%SZ" ONE_DAY_AGO=$(date -u -d "-1 day" +"%Y-%m-%dT%H:%M:%SZ") # 筛选出创建时间早于1天前的Droplet ID OLD_DROPLETS=$(doctl compute droplet list --format ID,CreatedAt --no-header --output csv | awk -F ',' '$2 < "'"$ONE_DAY_AGO"'" {print $1}') # 执行删除操作(--force参数跳过确认) if [ -n "$OLD_DROPLETS" ]; then echo "即将删除以下Droplet:$OLD_DROPLETS" doctl compute droplet delete $OLD_DROPLETS --force else echo "未找到创建时间超过1天的Droplet" fi
注意事项
- 确保已通过
doctl auth init完成API令牌配置,拥有Droplet的删除权限 - 建议先单独执行筛选ID的命令,确认目标Droplet无误后再执行删除操作
- 不同操作系统的
date命令语法可能有差异,需根据自身环境调整时间计算命令
内容的提问来源于stack exchange,提问作者Сavid
相关产品推荐
相关产品推荐

