备份这件事,很多人以为把数据库文件复制一份就够了。真到换服务器或误删数据时才发现:数据库能打开,但里面的 DeepSeek 密钥、支付私钥全解不开;或者数据库回来了,图片和附件全丢了。这篇把 KingCMS X1 的备份范围、定时任务和恢复流程讲清楚。

一键备份到底做了什么
后台的备份不是直接复制正在写入的库文件,而是用 SQLite 的在线备份接口取一致性快照,站点有人访问时也能备。每次备份完会跑一次 PRAGMA integrity_check,校验失败的文件不会记为有效备份。记录里会保存文件名、大小、SHA256、来源(手动/定时/恢复前)、创建人和时间;默认用 gzip 压缩成 .sqlite.gz。勾选「连同上传文件」时,数据库和 data/uploads/ 会打成一个 zip。
最容易漏的:app.key
data/app.key 不在备份里。它负责解密设置里的密钥字段——DeepSeek API Key、支付私钥、第三方接口密钥都靠它。只恢复数据库、不恢复 app.key,这些配置会变成解不开的密文。换服务器或重装系统时,要把 data/app.key 单独备份、一起带走,并且不要提交到任何仓库。
换服务器时该带走什么
整个 data/ 目录最稳:数据库、uploads/ 上传文件、app.key、backups/ 备份记录。如果只迁移数据库,记得另外带上 app.key 和 uploads/;只带数据库的结果通常是“页面能开、图片全裂、密钥报错”。
定时备份
在「设置 → 安全与系统 → 数据备份」里可以配:自动备份间隔(关闭/每天/每周,每周一执行)、执行时间(默认 03:15,按站点时区)、最多保留份数(默认 15,超出自动删最旧的定时备份,手动备份和恢复前备份不会被自动删)、是否压缩。定时备份只备数据库,不含上传文件。
定时备份依赖调度器每分钟执行一次 cron:run。宝塔面板在「计划任务」里新建 Shell 任务、周期选 1 分钟即可,命令用运行网站的用户执行,避免文件属主不对。没有调度器时,自动备份不会触发,只能在后台手动点。

恢复流程
在备份列表里展开「恢复」,输入站点名称或「确认」。系统会先校验所选文件,失败直接拒绝;.sqlite.gz 会先解压到临时文件再校验。校验通过后自动生成一份「恢复前」备份,然后用备份数据覆盖当前数据库,保留当前的数据库结构(迁移记录不还原),最后清空所有登录会话,管理员需要重新登录。恢复会覆盖当前数据,建议低峰期做,并确认选的是正确的那份。
顺手做数据库整理
删除数据后 SQLite 文件不会自动变小,空间留在空闲页里。每周的整理任务会执行 VACUUM,可选在整理后跑 PRAGMA optimize。整理前如果 24 小时内没有成功备份,会先自动备份一份;拿不到锁或被占用时跳过,下个周期再试。整理会占用写锁,安排在低峰时段更稳。
小结
记住三件事:备份要包含 app.key 和上传文件;定时备份只备数据库,且依赖每分钟的 cron:run;恢复前系统会自动再备份一次,但覆盖不可逆。把这三条写进运维清单,比出事后再找回要省心得多。