• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
「ClawBackup」—— 会「看脸色」的智能备份插件,回档只需一条命令!

原创 开源 世界管理 「ClawBackup」—— 会「看脸色」的智能备份插件,回档只需一条命令! 1.6.15

请登录后获取
该版本为预览测试版,请勿用于生产环境,若需稳定版请使用1.5.9,有bug及时反馈。

- **1.6.15**:彻底消除备份完成聊天框重复提示 — 玩家执行备份时只靠广播(文件名并入完成行),不再额外私聊「文件/未备份」,控制台仍显示完整详情

- **1.6.14**:修复 MineStock 持仓数据恢复/导出失败(MineStock 懒初始化 holdings 表,回档后 3 秒表未建导致「Table HOLDINGS not found」)——新增等待表出现的轮询(最多 60 秒、不抢建空库),备份与恢复都生效

- **1.6.13**:修复回档时「检测到正在运行的备份任务」误报(回档准备与备份共用 running 标志,插件 onDisable 提前关服导致 onDisable 误判);回档标记改为轮询等待(不再依赖时序巧合);回档禁用插件前打印说明(插件「运行时禁用」警告属正常)

- **1.6.12**:修复 1.6.11 引入的严重问题 — `getServerRoot()` 必须 `toAbsolutePath()`(部分核心上 `getWorldContainer()` 返回相对路径,`normalize()` 后为空路径,导致回档把所有文件误判为不安全路径、恢复 0 个文件);修复备份完成时聊天框重复提示(玩家执行备份时广播与私聊提示重复)

- **1.6.11**:服务器根目录改用 Bukkit API(`getWorldContainer`)获取,彻底移除对进程工作目录的依赖,适配面板/守护进程/脚本等任意启动方式;备份路径、数据库扫描、回档标记文件全部基于绝对根目录

- **1.6.10**:备份完成日志精简 — 已覆盖的数据库库不再提示为「跳过」;被锁文件汇总改为一行总结(如「4/5 已覆盖 | 1 未备份」),只列出真正未备份的文件;聊天栏不再重复广播「跳过被锁文件」

- **1.6.9**:SQLite 回档恢复改为「直接复制」(回档时插件已禁用、无文件占用,直接把 VACUUM INTO 快照覆盖回原 .db,绕开 ATTACH 逐表复制的表结构依赖/自增序列丢失问题;复制失败仍保留启动兜底);备份日志新增「数据库备份汇总」分类(✅已覆盖 / ❌未备份,一眼区分数据是否在备份包内)

- **1.6.8**:修复 Folia 下日志调用 Bukkit.isPrimaryThread() 崩溃;修复被同 JVM 锁定的世界区域文件被误判跳过(备份不再缺世界数据);修复回档准备阶段关闭自动保存后、手动关服/异常路径不恢复 save-on;备份名触发源过滤非法字符(防路径穿越);SQLite 恢复等待目标库就绪并逐表计数(消除空库假成功);SQLite/H2 导出与恢复 SQL 路径单引号转义;恢复任务被中断后不再继续执行;构建脚本 target 8→17(适配 Paper 1.20.1+/Java 17)

- **1.6.7**:日志大幅精简(备份过程不再刷阶段日志,跳过文件只汇总);SQLite 扫描排除 H2 文件(不再误报);MineStock 连接去掉多余 USER 参数(修复认证失败)

- **1.6.6**:回档禁用插件按依赖顺序执行(先禁依赖别人的,最后禁 LuckPerms/PAPI),消除 onDisable 报错噪音;插件禁用后异步线程不再尝试调度任务(消除"回档准备失败"误报)

- **1.6.5**:修复 SQLite 回档恢复 — 不再覆盖被插件占用的文件,改为 ATTACH 备份库 + SQL 逐表复制数据(插件运行时也能恢复)

- **1.6.4**:回档容错 — 单个文件被占用不再中断整个回档(跳过并提示);备份排除 tmp 临时目录(sqlite-jdbc 等 native 库);数据库导出日志精简为汇总

- **1.6.3**:SQLite 优化 — 已被 VACUUM INTO 热备份的原始 .db 不再重复直接复制,备份包更干净

- **1.6.2**:新增通用 SQLite 数据库热备份(官方 VACUUM INTO 一致性快照,自动覆盖 AuthMe/Brewery/PlayerPoints/TrMenu 等所有 SQLite 插件,回档后自动恢复)

- **1.6.1**:新增通用 H2 数据库兜底备份(自动尝试连接被锁的 H2 库,能连的用 SCRIPT TO 导出整个库随备份打包,回档后自动恢复;失败跳过不拖慢备份)

- **1.6.0**:新增 MineStock 持仓数据自动导出/回档导入(利用其 H2 AUTO_SERVER=TRUE,ClawBackup 内置 H2 驱动运行时 JDBC 直连,无需 MineStock 编译依赖)
# 🐾 ClawBackup v1.5.9 更新日志

**支持 Paper / Purpur / Folia · MC 1.16 ~ 26.2 · Java 8+**
**开源(GPL-3.0)| GitHub: https://github.com/zht1232/ClawBackup**

## ✨ v1.5.9 最新版

### 本次重大更新:回档恢复全自动闭环

之前回档后,LuckPerms / QuickShop / CustomNameplates 的数据恢复需要手动操作(甚至要手动输入确认命令),现在**全部自动完成**,无需人工介入:

- **🔄 一键回档后自动恢复**:回档完成重启后,自动执行
- LuckPerms → `lp import backup`(权限数据导入)
- QuickShop → `quickshop recovery recovery.zip` + **自动补发确认命令 `quickshop recovery confirm`**(商店数据导入,不再需要手动确认)
- CustomNameplates → 通过官方 API 自动导出/导入(名牌数据)
- **🛡️ 恢复窗口保护**:回档后进入"恢复窗口",期间**禁止一切备份触发**(手动 / 定时 / 启动备份都会被跳过),避免刚恢复的数据被新备份覆盖
- **⏭️ 回档后跳过启动备份**:刚完成回档重启时,自动跳过本次 `backup-on-start`,不再与恢复操作冲突
- **🧩 回档前禁用其他插件**:回档清空/覆盖插件目录前,先逐个禁用其他插件让它们正常保存,避免"目录被清空但插件还在写入"导致的保存失败(如 Ranking 报错)

### 完整更新历史(v1.5.5 → v1.5.9)

- **1.5.5 全面检修**
- 修复飞书 / 钉钉通知 JSON 结构错误(此前无法发送)
- GitHub 上传改为流式传输,大备份不再占满内存(不再 OOM)
- 修复插件关闭时自动保存可能不恢复的问题
- 被锁文件写入前预检,避免截断残体写进备份
- 统一智能备份判定边界、修复 `/cb reload`、异步日志线程安全、回档文件名路径穿越校验、倒计时广播去重等
- 移除未实现的配置项(backup-on-stop / use-temp-dir / backup-timeout-minutes)

- **1.5.6 新增 CustomNameplates 数据备份**
- CustomNameplates 使用 H2 数据库运行时被独占锁定、且无内置导出命令,现在通过官方 API 在备份前自动导出玩家名牌数据,回档后自动写回(软依赖,未安装时自动跳过)

- **1.5.7 / 1.5.8 / 1.5.9 回档恢复自动化**(见上方本次重大更新)

### ⚠️ 升级注意

老版本升级的用户,请确认 `plugins/ClawBackup/config.yml` 中 `restore:` 段落包含:

```yaml
restore:
auto-hook-plugins: true # 自动检测并挂钩插件
auto-restore-quickshop: true # 回档后自动恢复 QuickShop 商店
①解决 原生 Paper 显示"非 paper 端"
② 解决配置一直被标记 old、被覆盖、迁移不完整
  • 备份日志列出所有被锁数据库文件清单
  • 新增云备份上传(GitHub/百度网盘)、告警通知(邮件/飞书/钉钉)
  • Folia 适配(区域调度 API)、团队署名 CrystalKingdom
  • 回档完整化、关闭互锁修复、Java 8 兼容等
后退
顶部 底部