宝塔面板网站数据库定期备份并自动删除过期文件需通过计划任务实现:一、用内置“备份数据库”任务类型配置定时备份与保留天数;二、用Shell脚本自定义备份命名、压缩及清理;三、调用宝塔API远程触发备份并配合find命令清理旧文件。

如果希望宝塔面板中的网站数据库能够定期保存备份并自动删除过期文件,则需通过计划任务功能配置定时执行脚本。以下是实现此目标的具体操作步骤:
一、使用宝塔计划任务创建数据库备份
该方法利用宝塔内置的“备份网站”和“备份数据库”任务类型,无需编写脚本即可完成基础定时备份。宝塔会自动生成压缩包并存入指定备份目录,支持设置保留天数。
1、登录宝塔面板后,点击左侧菜单栏的计划任务。
2、在右上角点击添加计划任务按钮。
3、在“任务类型”下拉框中选择备份数据库。
4、在“数据库名”中勾选需要备份的一个或多个数据库。
5、在“备份到”选项中选择本地路径(如默认的/www/backup/database)或已配置的远程存储(如阿里云OSS、腾讯云COS等)。
6、在“保留天数”中输入数字,例如7,表示仅保留最近7天内的备份文件。
7、在“执行周期”中设定时间,例如选择每天 02:00执行。
8、点击提交保存任务。
二、通过Shell脚本实现自定义数据库备份与清理
该方法适用于需要对备份文件命名、压缩格式、分库打包或添加时间戳等高级控制的场景。脚本可统一管理多个数据库,并在备份后立即清理超出保留期限的旧文件。
1、进入宝塔面板的计划任务页面,点击添加计划任务。
2、将“任务类型”设为Shell脚本。
3、在“脚本内容”区域粘贴以下代码(请根据实际路径和数据库名修改):
#!/bin/bash<br>DB_NAME="your_database_name"<br>BACKUP_DIR="/www/backup/custom_db"<br>DATE=$(date +%Y%m%d_%H%M%S)<br>mkdir -p $BACKUP_DIR<br>mysqldump -u root -p"your_mysql_password" $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_$DATE.sql.gz<br>find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
4、将your_database_name替换为实际数据库名称。
5、将your_mysql_password替换为MySQL root用户的密码(若使用socket连接且无密码,可删去-p参数及后续内容,并确认mysqldump权限)。
6、确认BACKUP_DIR路径具有写入权限,必要时执行chmod -R 755 /www/backup/custom_db。
7、在“执行周期”中设定触发时间,例如每天 03:00。
8、点击提交保存任务。
三、借助第三方工具通过API调用完成自动化备份
该方法通过调用宝塔API接口触发备份动作,适合已部署独立运维平台或需与其他系统集成的环境。所有操作均在外部服务器发起,不依赖宝塔面板界面操作。
1、在宝塔面板中启用API:进入面板设置 → API接口 → 启用API,并记录下密钥与面板地址(含端口)。
2、确保API白名单中添加了调用服务器的IP地址。
3、在外部Linux服务器上安装curl工具,执行如下命令进行数据库备份请求:
curl -X POST "https://your_panel_ip:8888/api/backup/site_backup" \<br> -H "Content-Type: application/json" \<br> -H "Authorization: Bearer your_api_key" \<br> -d '{"db_name":"your_database_name","type":"database"}'
4、将your_panel_ip替换为宝塔服务器公网或内网IP。
5、将your_api_key替换为API设置页生成的实际密钥。
6、将your_database_name替换为目标数据库名。
7、将上述curl命令写入crontab,例如设置为每天凌晨执行:0 4 * * * /usr/bin/curl -X POST "https://..." -H "Authorization: Bearer ..." -d '{"db_name":"test","type":"database"}' > /dev/null 2>&1。
8、清理动作需另行配置独立的find命令或脚本,作用于宝塔默认备份路径/www/backup/database,例如:find /www/backup/database -name "*.sql*" -mtime +7 -delete。










