[timed_backup]定时远程备份热
- 定时远程备份ID timed_backup版本 1.1.2插件制作者 huaxiaoji售价 5 积分987 行 / 61.4 KB后台页按设定时刻自动把数据库、上传附件、程序文件等打包成压缩包,通过邮件发送到指定邮箱,防止数据丢失;支持全量/增量、大备份自动分卷、环境自检与测试邮件。收费插件安装说明购买后点击“授权码”获取一次性授权码;在后台 > 插件广场点击在线安装或更新,并填写该授权码。已购买用户更新免费:每次在线安装或更新前,重新点击“授权码”获取新的一次性授权码即可,无需再次购买;也可直接下载新版后用后台“插件上传”更新。尊重并感谢他人劳动,请勿传播代码。app/plugins/timed_backup/plugin.php开发日志已有 3 条
个人独立维护项目。
主楼 版本 1.1.0 更新:
v1.1.0(2026-09-27)
数据库导出改为流式分片(每片 5 万行),大表不再占用巨额内存、不再静默截断
备份清单记录列类型,恢复工具可重建表结构;新增独立恢复工具
邮件分卷阈值按编码膨胀折算,单卷不再超邮箱限制
修复 STARTTLS 加密后认证判断错误(587 端口常见场景)
后台 "立即备份 / 测试邮件" 先保存表单再执行,改动即时生效
修复文件数统计重复、PostgreSQL 漏备份、附件数量上限未生效等问题
新增压缩包密码(传统加密,兼容主流解压软件)
并发防护:自动回收异常中断的备份记录,防双跑与锁死
卸载时清理工作目录,不残留敏感数据
界面升级:折叠分区、系统主题变量、中文文案面向普通用户
v1.0.0(2026-09-26)
首个正式版本:定时 / 手动备份、全量 / 增量、邮件投递、环境自检、备份记录点赞与点评1bbs1org投币10个强烈赞同2026-09-27
插件质量报告
插件:
timed_backupHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
plugin_timed_backup_runlogs字段 类型 可空 默认值 约束 id id 否 - 主键、自增 backup_id uint 否 0 - ts uint 否 - - level key 否 'info' - message string 否 '' - duration_ms uint 否 0 - plugin_timed_backup_logs字段 类型 可空 默认值 约束 id id 否 - 主键、自增 trigger_name key 否 'cron' - status key 否 'running' - scope string 否 '' - mode key 否 'full' - file_count uint 否 0 - zip_count uint 否 0 - total_size uint 否 0 - error text 否 - - started_at uint 否 - - finished_at uint 否 0 - 定时远程备份 v1.1.0 —— 使用与安装说明
再也不用担心网站数据丢失。
设定好时刻,插件会自动把数据库、上传附件、程序文件打包成压缩包,通过邮件发送到你的邮箱 —— 灾难发生时,你离完整恢复只差一封邮件。
一、功能亮点
能力 说明 ⏰ 定时自动备份 每天 / 每周 / 每月固定时刻自动执行,无需手动干预;计划点持久化保存,服务器重启也不丢 📦 四种备份内容 数据库(全部数据)、站点与插件配置、程序文件、上传附件,按需勾选 ⚡ 增量模式 附件按 "上次成功备份之后的变化" 增量打包,节省流量与存储;数据库始终全量,保证完整性 ✉️ 邮件投递 压缩包直接发到指定邮箱(支持多个收件邮箱),可随时在任意设备下载保存 📎 自动分卷 备份超过邮箱单封上限时自动拆成多个压缩包分多封发送,不再受附件大小限制 🔐 可选加密 可为压缩包设置密码,邮件泄露也能保护数据 🩺 环境自检 后台一键检查打包支持、加密支持、目录权限、任务注册、邮件配置五项是否就绪 📨 测试邮件 配置完成后先发一封测试邮件确认,避免 "定时任务失败才发现" 📜 完整日志 每次备份的成功 / 失败、卷数、大小、错误原因全部记录并可翻页查看 🔧 一键恢复 附带独立恢复工具,从备份压缩包重建数据库并还原文件 二、环境要求
- PHP 8.1 及以上(建议 8.2+),需要
pdo_sqlite/pdo_mysql/pdo_pgsql之一、zip扩展、mbstring扩展
- 服务器需启用计划任务(cron)调度,插件每 5 分钟唤醒检查计划点
- 发件邮箱需开启 SMTP 服务并获取授权码(见下文常见邮箱配置)
三、安装步骤
- 将本包中的
plugin.php上传到论坛插件目录:app/plugins/timed_backup/plugin.php
- 进入后台 管理 → 插件,点击 "同步插件" 让系统发现本插件
- 找到 "定时远程备份",点击 启用(安装会自动创建日志表并初始化计划)
- 进入插件设置页,先看 环境自检 五项是否全绿;缺失项按提示处理
- 填写邮件投递配置 → 点击 发送测试邮件,确认能收到
- 点击 保存设置,备份计划即生效(下次自动备份时间会在页面显示)
提示:未配置 SMTP 前插件不会自动执行备份,但随时可以手动 "立即备份并发送"。
四、配置指南
1. 备份计划
- 备份频率:每天 / 每周(选星期几)/ 每月(选 1–28 日)
- 执行时刻:站点时区下的 HH:MM(如
03:30,建议选访客少的时段)
- 备份模式:全量 / 增量。增量模式下数据库仍始终全量,只有附件按变化增量
2. 备份内容
- 数据库:站点全部数据表,逐表导出为 JSON 分片(大表自动分片,不再受单表行数限制)
- 站点与插件配置:未勾选数据库时单独备份配置表
- 程序文件:
index.php与app/目录(自动排除数据与上传目录),可设总量上限
- 上传附件:
app/upload,可设文件数量上限(防止海量小文件拖垮备份)
3. 邮件投递(SMTP)
各邮箱服务商的参考配置(授权码可在邮箱设置中生成):
邮箱 服务器 端口 加密方式 单封附件建议 QQ 邮箱 smtp.qq.com 465 SSL 45MB 以内 163 邮箱 smtp.163.com 465 SSL 45MB 以内 Gmail smtp.gmail.com 587 STARTTLS 20MB 以内 Outlook smtp.office365.com 587 STARTTLS 20MB 以内 - 发件账号:通常就是发件邮箱地址;发件密码 / 授权码:填邮箱服务商生成的 "授权码",不是邮箱登录密码
- 单封邮件上限:按目标邮箱限制的约七成填写(编码膨胀约 33%,45MB 附件实际投递约 60MB)
- 备份超过单封上限时自动分卷为多封邮件,邮件主题带卷号(如「1/3」「2/3」)
五、手动备份与测试
- 立即备份并发送:无视是否到计划时刻,立刻执行一次完整备份并发邮件(大站点耗时较长,页面有保护提示)
- 发送测试邮件:不打包任何数据,仅验证 SMTP 配置能否投递
- 备份记录页会显示每次的触发方式(定时 / 手动)、内容、卷数、大小与结果
六、恢复数据(重要)
插件附带的独立恢复工具(命令行):
restore_timed_backup.php\# 恢复数据库到新库 php restore\_timed\_backup.php backup\_20260927\_033000\_part1.zip restore.db \# 同时把程序文件与附件解压到目录 php restore\_timed\_backup.php backup\_xxx.zip restore.db ./restored- 支持多卷:把收到的所有卷压缩包放在一起,工具按清单自动合并分片
- 数据库按备份清单重建表并导入数据(类型宽松映射:INTEGER / REAL / TEXT / BLOB)
- 恢复前务必先备份现有数据库;恢复后建议重建索引并做一次完整备份
- 若设置了压缩包密码,请用支持密码解压的工具先解压出内容再恢复
恢复工具独立于论坛运行,不修改任何论坛代码;建议在服务器停止写入时恢复。此文件尚在测试,如有需要请联系本人获取。
七、安全与注意事项
- 备份包含用户邮箱、密码哈希等敏感数据,请确认收件邮箱安全,强烈建议设置压缩包密码
- 邮件传输依赖加密(SSL / STARTTLS);不建议使用 "不加密" 模式
- 增量模式是 "追加式":请保留全部历史邮件 / 压缩包,仅靠最近一次增量卷无法完整重建附件
- 分卷邮件需全部保存后再解压;若某卷发送失败,日志会写明 "已成功发送 X/N 卷",重试会重发全部卷
- 备份失败会自动走系统重试(默认 3 次后暂停 30 分钟),暂停到期自动恢复,不会永久卡死
- 工作目录
data/timed_backup_work/在成功备份后自动清理;异常中断时残留文件会在下次自动回收
八、常见问题
Q:收不到备份邮件?
先点 "发送测试邮件";若测试能收到而定时收不到,检查后台 "备份记录" 中的失败原因(错误信息会完整记录),常见为授权码错误、端口 / 加密不匹配、附件超限。
Q:单卷压缩包提示过大无法发送?
备份中存在超大单个文件(如很大的数据表导出)。请调低 "单封邮件上限" 以外的因素:拆分备份内容、提高邮箱附件上限,或把超大的表拆分导出。
Q:增量模式没有备份到所有附件?
增量只打包上次成功备份之后新增或修改的文件,删除不反向生效。要完整快照请切换 "全量" 模式。
Q:压缩包提示需要密码?
在设置页 "压缩包密码" 处配置过密码。留空保存不会清除已有密码;如需取消加密,请重新填写并联系管理员确认解压密码。
Q:服务器没有开启计划任务怎么办?
本插件依赖系统 cron 每 5 分钟唤醒一次。请参照主程序文档启用 cron 调度,否则只能手动备份。
九、更新日志
v1.1.0(2026-09-27)
- 数据库导出改为流式分片(每片 5 万行),大表不再占用巨额内存、不再静默截断
- 备份清单记录列类型,恢复工具可重建表结构;新增独立恢复工具
- 邮件分卷阈值按编码膨胀折算,单卷不再超邮箱限制
- 修复 STARTTLS 加密后认证判断错误(587 端口常见场景)
- 后台 "立即备份 / 测试邮件" 先保存表单再执行,改动即时生效
- 修复文件数统计重复、PostgreSQL 漏备份、附件数量上限未生效等问题
- 新增压缩包密码(传统加密,兼容主流解压软件)
- 并发防护:自动回收异常中断的备份记录,防双跑与锁死
- 卸载时清理工作目录,不残留敏感数据
- 界面升级:折叠分区、系统主题变量、中文文案面向普通用户
v1.0.0(2026-09-26)
- 首个正式版本:定时 / 手动备份、全量 / 增量、邮件投递、环境自检、备份记录
*插件作者:滑小稽 本插件仅作数据保护用途,请合法合规使用。
最后由 huaxiaoji 编辑于 2026-09-27 16:31- PHP 8.1 及以上(建议 8.2+),需要
实用的工具
首次备份基本多久? 初始站 十分钟了还在进行中。
09-27 16:55
手动
—
进行中版本 1.1.1 更新:
修复备份记录异常的问题
增加了备份格式的设置项。版本 1.1.2 更新:
新增 运行日志 区块OK了。