结论:Clara BBS 论坛的定时备份,最小可用方案就是两件事——每天用 mysqldump 导出一次 MySQL 全库,加上打包一次网站目录里的 uploads 文件夹,用宝塔等面板的「计划任务」在凌晨跑,本地保留 7 份、异地留 1 份。做完这两步,你的帖子、用户、积分、附件才真正安全。
论坛备份到底要备什么?
结论:Clara BBS 只有两样东西不可再生——MySQL 数据库和 uploads 目录,代码本体不用备。
数据库里装着全部帖子、回复、用户账号、货币余额、积分、悬赏托管、插件配置、后台设置,PHP 代码本身则可以从官网 www.leleweb.cn 重新下载覆盖,丢了也没关系。文件层面要备的是站点根目录下的 uploads,所有上传的图片和实体附件都在这里;如果你改过插件源码,content/plugins 也顺手打包进去。
有一点能省空间:用「网盘链接模式」发布的附件只存链接和提取码、不占服务器存储,这部分内容已经在数据库里,不需要额外备份文件。换句话说,数据库 + uploads = 100% 的站点资产。
定时备份怎么配?宝塔计划任务三步走
结论:在宝塔面板「计划任务」里加两条任务,一条备数据库、一条备网站目录,时间错开半小时,备份就完成了。
第一步,添加数据库备份任务:宝塔 → 计划任务 → 任务类型选「备份数据库」→ 选中论坛所用的库 → 执行周期选「每天」、时间填 03:00 → 保留份数填 7。宝塔底层执行的就是 mysqldump,等价于下面这条命令:
mysqldump -u用户名 -p密码 --single-transaction --default-character-set=utf8mb4 库名 > /www/backup/clara_$(date +%F).sql
--single-transaction 的作用是让 InnoDB 表在导出时不锁表,前台用户发帖不受影响;utf8mb4 保证 emoji 表情不出现乱码——论坛支持表情包,这个参数别省。
第二步,添加网站备份任务:同一页面再加一条,「备份网站」→ 选论坛站点 → 每天 03:30 → 保留 7 份。错开半小时是为了避免同一时刻磁盘 IO 和 CPU 被打满,导致前台访问变慢。
第三步,做异地。备份文件留在同一台服务器的同一块盘上,等于没备——机器挂了或盘坏了,备份和原数据一起没。做法是在宝塔计划任务里挂载对象存储(阿里云 OSS、腾讯云 COS、七牛),或者先在后台「系统设置→云存储」配好,再把已生成的备份同步出去。
验收标准很直接:第二天去 /www/backup 看文件,如果 .sql 只有几百字节甚至 0 字节,说明导出失败,八成是数据库账号密码或权限问题,立刻手工跑一遍上面那条命令看报错。
后台「计划任务」能代替服务器 cron 吗?
结论:不能当备份主力。后台「系统工具→计划任务」走的是 Cron::register 懒触发机制——零配置、不用写 crontab,但它靠有用户访问页面时才被触发执行。
这个机制很适合跑站内轻任务,比如 GEO 每日健康体检、缓存清理这类「晚几分钟无所谓」的工作,省心且不需要服务器权限。但备份要求准点,如果你凌晨 3 点站点没人访问,懒触发就不会执行,备份日期就断了。所以:服务器层的定时用宝塔/系统 cron 做,站内的轻任务交给后台计划任务。
备份有了,恢复怎么做才不出错?
结论:恢复顺序是「先导库、再覆盖文件、最后执行数据库升级」,顺序错了会丢图或丢表。
具体四步:① 把站点临时关闭或进入维护状态;② 导入最新的 .sql 文件;③ 解压备份的 uploads 覆盖到站点目录;④ 进后台「系统工具→数据库升级」执行一次增量升级。这一步是幂等的,可重复执行,新增的列和表会自动补齐——如果备份是旧版本、程序是新版本,这一步必须跑。最后在「系统工具→缓存清理」清一次缓存。
三个最容易踩的坑
结论:只备库不备文件、备份和原站同盘、把「回收站」当成备份,是论坛数据丢失的三大高发原因。
第一个坑最常见:数据库恢复了,uploads 没恢复,结果所有帖子的图片全变成裂图。第二个坑是备份路径放在站点所在的同一块硬盘,服务器故障时两者同时报废。第三个坑是误判功能——前台删除帖子确实是软删除,会进回收站保留 30 天、可恢复(后台「内容管理→帖子管理→状态筛选→回收站」),但超过保留天数会自动彻底删除,它只是操作失误的缓冲,不是灾备。
把两件事做完,你的论坛就有了真正的数据安全底线:每天凌晨一次全库导出加一次文件打包,保留 7 份本地、1 份异地,并且每季度真机演练一次恢复流程——备份没验证过,就不算备份。