数据备份

数据备份运维

版本 v1.0.1· 张先生 · 18 次获取 · 运维
数据备份(backup)——支持数据库、上传文件及完整备份,一键恢复与定时自动备份(CLI / Web cron)。
免费

详情介绍

一、插件简介

数据备份插件为站长提供站点数据安全保障:支持仅数据库、仅上传文件或完整备份,后台一键创建/下载/恢复/删除,并可配置定时自动备份(命令行或 Web 访问触发)。

入口路径
后台管理/admin/backup
Web 定时任务GET /backup/cron?key=密钥
CLI 定时任务php think backup:run
配置应用中心 → 数据备份 → 配置
URL 后缀说明:Web cron 示例 /backup/cron.html?key=xxx;后缀继承社区 url_suffix(默认 html)。

二、核心能力

能力说明
备份类型完整备份、仅数据库、仅上传文件
一键创建后台手动触发,记录写入 backup_record
下载备份导出备份包到本地
一键恢复从备份包还原(可选恢复前自动备份)
自动清理按保留数量与保留天数删除旧备份
mysqldump可选指定路径加速数据库导出
定时备份应用中心配置间隔与类型,CLI 或 Web cron 触发
恢复前备份恢复操作前自动创建完整备份便于回滚

三、依赖与安装

  1. 无硬依赖其他插件;完整备份包含数据库与 public/storage 等上传目录。
  2. 安装执行 install.sql,创建 backup_record 表。
  3. 注册后台菜单「数据备份」及创建/下载/删除/恢复权限。
  4. 备份文件存储在插件配置的备份目录(由 BackupService 管理,通常在 runtime/backup 或 storage 下)。
  5. 恢复操作风险极高,务必在测试环境验证后再用于生产。

四、应用中心基础配置

字段来自 BackupPlugin::configSchema()

配置项类型说明
最多保留备份数 max_backups数字超出后删最旧;0 不限制数量
备份保留天数 retention_days数字超期自动清理;0 不按天数清理
mysqldump 路径 mysqldump_path文本可选,留空自动检测
启用定时备份 auto_enabled开关开启后可通过计划任务或 Web 触发
定时备份类型 auto_type下拉full 完整 / db 仅数据库 / files 仅上传文件
定时间隔(小时) auto_interval_hours数字两次自动备份最小间隔,建议 24
定时任务密钥 cron_key文本访问 /backup/cron?key=密钥;留空禁用 Web 入口
恢复前自动备份 restore_pre_backup开关恢复前先创建完整备份

内部字段 last_auto_time 记录上次自动备份时间,由系统自动维护。

五、后台/重点配置

后台 数据备份/admin/backup):

操作路径说明
备份列表GET backup/list查看历史备份记录
创建备份POST backup/create选手动类型创建
下载GET backup/download下载指定备份包
恢复POST backup/restore从备份还原(高风险)
删除POST backup/delete删除备份记录及文件

备份类型说明

  • 完整备份:数据库 SQL + 上传文件打包
  • 仅数据库:导出 MySQL 数据
  • 仅上传文件:打包用户上传的静态/附件目录

六、前台用户流程

普通用户无前台界面。仅站长通过以下方式触发自动备份:

Web Cron

GET /backup/cron?key={cron_key}

auto_enabled 开启且 cron_key 非空;满足 auto_interval_hours 间隔后执行 auto_type 指定类型备份。

CLI

php think backup:run

适合服务器 crontab,不依赖 Web 密钥。

七、后台审核与运维

场景建议
日常运维每周至少一次完整备份,重大升级前手动备份
定时任务服务器 crontab 调用 CLI 比 Web cron 更安全
恢复演练定期在测试环境验证备份可恢复
异地存储下载备份到本地或对象存储,勿仅存服务器
磁盘空间关注 max_backupsretention_days,避免占满磁盘
恢复操作确认 restore_pre_backup 开启;低峰期执行

八、特殊说明

路由

类型路径控制器
前台backup/cronCron@run
后台backup/*admin\Index

服务类

  • BackupService:创建、打包、清理逻辑
  • RestoreService::restore():执行恢复并记录操作者

ensureSchema / ensureMenus

已安装站点启动时自动补表、补菜单。

安全

  • cron_key 应使用足够长的随机字符串,勿泄露
  • 留空 cron_key 可禁用 Web 触发,仅保留 CLI

九、推荐上线清单

  • 安装 backup 插件
  • 配置保留数量与保留天数
  • 手动创建一次完整备份并下载到本地
  • 在测试环境试恢复,确认流程可行
  • 配置 crontab:php think backup:run 或 Web cron
  • 设置强随机 cron_key(若用 Web)
  • 开启「恢复前自动备份」
  • 若有 mysqldump,填写路径加速备份

十、常见问题

Q:备份失败或数据库导出很慢? 填写正确的 mysqldump_path;检查 PHP exec 权限与磁盘空间。

Q:Web cron 无反应? 确认 auto_enabled 开启、cron_key 匹配、距上次备份已超过 auto_interval_hours

Q:恢复后站点异常? 使用恢复前自动生成的备份回滚;恢复会覆盖当前数据,务必先备份。

Q:备份文件存在哪? 查看 backup_record 表中路径字段;一般在 runtime 或 storage 备份目录。

Q:能否只备份社区数据? 当前版本按全库或全上传目录备份,不支持按表自选;可仅用数据库备份后手动筛选 SQL。

Q:CLI 与 Web cron 冲突? 共用 last_auto_time 与间隔限制,任一方式触发后另一方式在间隔内不会重复执行。

更新记录 (1)

  • v1.0.1 2026-08-24
    首次发布
微信客服 微信客服