ZBlogCMS 定时自动备份可以实现吗

juming
juming 初级会员超兽战士
发布于 2026-10-08 00:17 ·1 浏览 ·0 回复

学会这篇,你就能让 ZBlog 站点每天凌晨自动把数据库和附件打包备份,出问题时十分钟内恢复回来。

先说结论:ZBlog 本身没有内置定时任务功能,后台自带的备份是「点一下备一次」的手动操作,它不会自己按时间跑。但这件事完全可以实现,思路有两条——用插件 + 服务器计划任务,或者干脆绕开 ZBlog,直接用服务器自带的 crontab 调 mysqldump。后者更稳,推荐优先选。

第一步:先手动备份一次,确认数据在哪

打开 ZBlog 后台,左侧菜单找到「数据库管理」(Z-BlogPHP 1.7 版本的位置,旧版本可能挂在「工具」分组下),点「备份数据库」,它会生成一个 .sql 文件放在 zb_users/backup/ 目录里。

这一步的真正目的是让你搞清楚两件事:数据库叫什么名字、备份文件长什么样。因为 ZBlog 真正需要备份的不只是数据库——你上传的图片在 zb_users/upload/,主题和插件在 zb_users/theme/、zb_users/plugin/,这些文件 mysqldump 是备不到的,必须单独打包。

注意:数据库连接信息如果记不清,打开网站根目录下的 zb_users/c_option.php,里面存着数据库名、用户名和密码(Z-BlogPHP 1.7)。别把这个文件的内容发到任何群里。

第二步:写一个备份脚本

在服务器上建一个目录,比如 /www/backup,然后新建 backup_zblog.sh,内容如下(把中文注释替换成你的真实信息):

#!/bin/bash
D=$(date +%Y%m%d)
mysqldump -h127.0.0.1 -u数据库用户名 -p'数据库密码' 数据库名 | gzip > /www/backup/db_$D.sql.gz
tar -czf /www/backup/files_$D.tar.gz /www/wwwroot/你的站点目录/zb_users/upload
find /www/backup -name "*.gz" -mtime +7 -delete

给它执行权限:chmod +x /www/backup/backup_zblog.sh,先手动跑一次 bash /www/backup/backup_zblog.sh,看到目录里出现两个压缩包就算成功。

注意:-p 和密码之间不能有空格,密码含 $、! 这类符号时要加单引号包住。脚本最后一行是自动删除 7 天前的旧备份,不加的话磁盘会被撑爆。

第三步:挂上系统定时任务

执行 crontab -e,在文件末尾加一行:

0 3 * * * /bin/bash /www/backup/backup_zblog.sh

保存退出。这行的意思是每天凌晨 3 点整执行一次脚本。用 crontab -l 可以查看已配置的任务列表。

第四步:如果你用宝塔面板,可以全程点鼠标

登录宝塔面板(Linux 版 7.9 / 8.x 都一样),左侧菜单点「计划任务」→「添加任务」。任务类型选「Shell 脚本」,任务名称填「ZBlog每日备份」,执行周期选「每天」,小时填 3、分钟填 0,脚本内容粘贴第二步里那三行核心命令,点「保存」。

注意:宝塔里粘贴脚本时不要把 #!/bin/bash 也带上,任务类型选 Shell 脚本时面板会自己处理。

第五步:验证备份真的能还原

等第二天,去 /www/backup 看有没有新文件生成,文件大小是不是和数据库体量对得上。真正的考验是还原——找个测试环境,解压 .sql.gz,用 mysql -u用户名 -p 数据库名 < db_20250101.sql 导回去,能正常打开首页才算备份有效。

只在后台点「备份数据库」而不做还原测试,等于没备份。

小结

  • ZBlog 没有内置定时备份,必须靠服务器 crontab 或宝塔计划任务来驱动。
  • 数据库用 mysqldump,附件目录 zb_users/upload 用 tar,两者缺一不可。
  • 脚本里一定要加清理旧文件的 find ... -mtime +7 -delete,否则磁盘迟早满。
  • 备份文件不要放在网站根目录下,否则可能被人直接下载走。
  • 配好之后务必做一次完整还原演练,能恢复的备份才叫备份。
版权声明:本文来自 GJ站长论坛《ZBlogCMS 定时自动备份可以实现吗》
原文链接:https://www.gj0.com/thread-639.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~