宝塔面板是很多站长管理服务器的常用工具,它自带的备份功能可以定期生成网站和数据库的备份文件,但长期积累的备份会占用大量磁盘空间,手动清理不仅麻烦还容易遗漏。通过宝塔的计划任务功能,我们可以设置自动清理过期备份的规则,实现存储空间的智能管理。

准备工作
在开始配置之前,需要先确认两件事:一是已经通过宝塔面板生成过至少一次备份文件,知道备份文件的存储路径;二是明确自己需要保留多久的备份,比如保留最近7天的备份,超过7天的自动删除。
步骤一:确认备份文件存储路径
宝塔默认的备份路径通常如下:
- 网站备份路径:
/www/backup/site/ - 数据库备份路径:
/www/backup/database/ - 如果自定义过备份路径,可以在备份任务的历史记录中查看具体存储位置。
步骤二:编写清理脚本
我们可以编写一个Shell脚本,用来查找并删除指定天数前的备份文件。以下是清理7天前网站备份的示例脚本:
#!/bin/bash
# 设置要清理的备份目录,这里以网站备份目录为例
backup_dir="/www/backup/site/"
# 设置保留天数,这里保留7天内的备份,超过7天的删除
keep_days=7
# 查找并删除超过指定天数的备份文件,文件类型为tar.gz
find $backup_dir -type f -name "*.tar.gz" -mtime +$keep_days -exec rm -f {} ;
# 输出清理完成日志
echo "$(date '+%Y-%m-%d %H:%M:%S') 网站过期备份清理完成" >> /www/backup/clean_log.txt
如果需要同时清理数据库备份,可以再添加对应的清理命令,示例如下:
#!/bin/bash
# 网站备份目录
site_backup_dir="/www/backup/site/"
# 数据库备份目录
db_backup_dir="/www/backup/database/"
# 保留天数
keep_days=7
# 清理网站过期备份
find $site_backup_dir -type f -name "*.tar.gz" -mtime +$keep_days -exec rm -f {} ;
# 清理数据库过期备份,数据库备份文件通常为.sql.gz格式
find $db_backup_dir -type f -name "*.sql.gz" -mtime +$keep_days -exec rm -f {} ;
# 记录清理日志
echo "$(date '+%Y-%m-%d %H:%M:%S') 所有过期备份清理完成" >> /www/backup/clean_log.txt
将脚本保存为clean_backup.sh,上传到服务器的/www/server/cron/目录下,然后给脚本添加执行权限:
chmod +x /www/server/cron/clean_backup.sh
步骤三:在宝塔面板添加计划任务
登录宝塔面板,依次点击计划任务选项卡,按照以下参数配置任务:
| 配置项 | 配置内容 |
|---|---|
| 任务类型 | Shell脚本 |
| 任务名称 | 清理过期备份 |
| 执行周期 | 每天 |
| 执行时间 | 建议设置为凌晨2-4点,避开业务高峰期 |
| 脚本内容 | 填写刚才上传的脚本完整路径:/www/server/cron/clean_backup.sh |
配置完成后点击添加任务,然后可以点击任务后面的执行按钮,测试脚本是否能正常运行。
步骤四:验证清理效果
执行任务后,可以查看两个地方确认是否生效:
- 查看备份目录下是否还有超过7天的备份文件,如果已经被删除说明脚本生效。
- 查看清理日志文件
/www/backup/clean_log.txt,里面会有每次清理的执行时间记录。
注意事项
1. 首次配置建议先手动执行脚本测试,避免误删重要文件,可以先将脚本中的rm -f替换为ls -l,查看会匹配到哪些文件,确认无误后再改回删除命令。
2. 如果备份文件存储路径不是默认路径,需要修改脚本中的backup_dir变量为实际路径。
3. 可以根据自身需求调整keep_days的值,比如重要业务可以保留30天的备份,测试站点可以保留3天的备份。
4. 清理日志文件建议定期手动清理,避免日志文件本身占用过多空间。