可通过脚本自动清理宝塔面板过期备份:一、用find命令+crontab按修改时间删除;二、用宝塔计划任务执行Shell脚本;三、用Python按文件名日期精准清理;四、调用宝塔API接口远程删除。

如果您在宝塔面板中手动管理备份文件,但希望减少人工干预、避免磁盘空间被长期积累的旧备份占满,则可通过脚本自动识别并删除指定天数前的备份文件。以下是实现该功能的多种方法:
一、使用Linux定时任务配合find命令清理
该方法不依赖宝塔内置功能,直接调用系统级文件查找与删除能力,适用于所有备份存储路径(如/www/backup、/www/server/panel/backup等),按修改时间精确筛选过期文件。
1、执行命令进入宝塔面板备份目录示例路径:cd /www/backup/site
2、运行find命令删除7天前的.tar.gz备份文件:find . -name "*.tar.gz" -mtime +7 -delete
3、将该命令写入crontab定时执行:编辑定时任务列表,输入crontab -e,添加一行:0 2 * * * cd /www/backup/site && find . -name "*.tar.gz" -mtime +7 -delete
4、保存退出后,系统将在每天凌晨2点自动执行清理。
二、通过宝塔计划任务调用Shell脚本
利用宝塔面板自带的“计划任务”功能,可图形化配置执行周期与脚本内容,避免直接操作crontab,更适合不熟悉Linux命令的用户。
1、登录宝塔面板,点击左侧菜单“计划任务”,然后点击“添加计划任务”。
2、任务类型选择Shell脚本,执行周期设为每天 02:00。
3、在脚本内容框中粘贴以下代码:find /www/backup/database -name "*.sql.gz" -mtime +5 -delete && find /www/backup/site -name "*.zip" -mtime +10 -delete
4、点击“添加任务”,宝塔将自动注册并按时运行该脚本。
三、使用Python脚本精准控制备份文件生命周期
该方法支持按文件名中的日期字符串解析创建时间(如backup_20240520.zip),避免因文件修改时间被意外更改导致误删,适合对时间逻辑有严格要求的场景。
1、在服务器上创建脚本文件:vi /www/scripts/clean_backups.py
2、写入如下Python代码(以清理site目录下命名含日期且早于3天的.zip文件为例):import os, re, time; now = int(time.time()); for f in os.listdir('/www/backup/site'): m = re.match(r'backup_(\d{8})\.zip', f); if m: dt = time.mktime(time.strptime(m.group(1), '%Y%m%d')); if now - dt > 3*86400: os.remove(os.path.join('/www/backup/site', f))
3、赋予执行权限:chmod +x /www/scripts/clean_backups.py
4、在宝塔计划任务中新增Shell任务,内容为:python3 /www/scripts/clean_backups.py
四、调用宝塔API接口触发清理动作
该方式适用于已启用宝塔API且需远程或集成式调用的环境,通过HTTP请求向面板发送指令,由面板自身逻辑执行清理,安全性依赖API密钥保护。
1、确保宝塔面板已开启API,并记录下API密钥与绑定IP白名单。
2、构造curl请求,向/api/backup/delete_backup端点提交JSON数据,其中包含目标备份ID列表(需先调用/api/backup/get_list获取ID及create_time字段)。
3、在Shell脚本中组合查询与删除逻辑,例如:curl -s -X POST "http://127.0.0.1:8888/api/backup/delete_backup" -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_KEY" --data '{"ids":[102,105]}'
4、将该curl命令嵌入定时任务,完成基于API的自动化清理流程。










