刚刚好的备份 (JEB)

刚刚好的备份 (JEB)

Just Enough Backups是一个Fabric模组,为服务器端的世界备份添加了可用的游戏内工作流程。

Just Enough Backups 横幅

Just Enough Backups 是一款 Fabric 模组,可添加服务器端的世界备份功能,并提供了实用的游戏内操作流程。

支持功能:

  • 完整备份、部分备份和差异备份
  • 通过命令和界面进行手动备份
  • 自动定时备份
  • 可配置的公开备份/恢复公告
  • 按备份数量进行保留
  • 按每个世界的备份总大小进行保留
  • 从备份浏览器准备恢复操作
  • 可配置的客户端 HUD 弹窗,带实时预览
  • 可选的 Mod Menu 集成

本模组设计为将实际备份逻辑保留在服务器端,同时通过客户端界面提供管理和配置功能。

功能特性

备份类型

  • 完整备份:存储世界的完整快照。
  • 部分备份:存储相对于基础备份的更改。
  • 差异备份:存储相对于基础备份的更改,同时与部分备份保持独立的保留类别。

模组会跟踪备份之间的依赖关系。保留和删除操作会遵循这些依赖关系,因此当较新的部分备份或差异备份仍依赖基础备份时,必要的基础备份会被保留。

自动备份

自动备份由各类型的调度器(FULL、DIFFERENTIAL、PARTIAL)驱动,可配置为:

  • 根据每种备份类型配置的间隔独立运行
  • 在自动备份开始前发送可选的公开警告
  • 在自上次备份以来没有玩家在线时暂停
  • 服务器启动时运行
  • 服务器停止时运行

公开公告可以发送到聊天栏、发送到动作栏,或禁用。

保留策略

可以同时以两种方式配置保留策略:

  • 基于数量的保留
    • 保留最新的 X 个完整备份
    • 保留最新的 X 个部分备份
    • 保留最新的 X 个差异备份
  • 每个世界的大小上限
    • 对世界备份文件夹的总大小设置可选的硬上限
    • 应用于最终发布的备份集
    • 遵循依赖链

如果在删除所有允许删除的备份后,新备份仍会超出配置的空间上限,则创建将失败,而不会发布无效的最终状态。

备份管理界面

备份浏览器包含:

  • 刷新
  • 创建备份
  • 重命名备份
  • 删除备份
  • 恢复备份
  • 依赖感知的内联详细信息
  • 搜索/筛选

手动备份创建支持通过命令行和界面自定义文件名。

配置界面与弹窗预览

配置界面提供:

  • 备份模式和调度器选项
  • 保留规则
  • 权限级别
  • 完整性模式
  • 备份目录
  • 排除路径
  • 弹窗文本、颜色、渠道和布局

弹窗预览界面允许您在保存前移动和预览 HUD 状态。

命令

根命令为:

/jeb

可用命令:

/jeb now
/jeb now <name>

/jeb create full /jeb create full <name> /jeb create partial /jeb create partial <name> /jeb create differential /jeb create differential <name>

/jeb list /jeb next /jeb restore <backup> /jeb config reload

说明:

  • <name> 是可选的,在清理后将成为实际的 .zip 文件名。
  • <backup> 是显示的备份名称,带或不带 .zip 后缀均可。Tab 补全会建议显示名称。
  • 恢复操作会异步准备,然后服务器会关闭,以便在下次启动时安全地应用恢复。
  • /jeb next 显示一个多调度摘要,展示所有配置的备份类型的剩余时间和确切执行时间戳,并按临近程度排序。
  • 命令访问遵循配置的权限级别。

默认按键绑定

客户端按键绑定:

  • B:打开备份管理
  • N:打开配置界面

这些是常规的 Minecraft 按键绑定,可以在“控制”中更改。

配置

模组将配置文件写入:

config/justenoughbackups.json

主要配置区域:

  • backupMode
  • automaticBackupsEnabled
  • pauseAutomaticBackupsWithoutPlayers
  • backupOnServerStart
  • backupOnServerStop
  • automaticIntervalMinutes
  • automaticBackupWarningEnabled
  • automaticBackupWarningMinutes
  • commandPermissionLevel
  • messageChannel
  • integrityMode
  • minimumFreeSpaceReserveMb
  • backupDirectory
  • excludedPaths
  • retention
    • full
    • incremental
    • differential
    • maxTotalSizeMb
  • popup

backupDirectory 可以是相对于游戏目录的相对路径,也可以是绝对路径。

excludedPaths 使用相对于世界根目录的路径。文件夹条目会排除整个子树,而文件条目仅排除该特定文件。

示例:

voxy
voxy/cache.db

在创建备份之前,模组还会检查备份目标文件系统上的可用磁盘空间。该检查是保守的,需要:

(当前世界大小 * 2) + minimumFreeSpaceReserveMb

如果没有足够的空间,则在写入临时 ZIP 之前中止备份创建。

备份命名

手动备份支持自定义名称:

  • 通过命令:/jeb now My backup
  • 通过备份界面中的创建对话框

如果未提供自定义名称,模组将根据类型和时间戳使用自动命名方案。

重命名与手动创建使用相同的清理规则,以保持命名行为一致。

要求

根据当前项目配置:

  • Minecraft: 26.1.2
  • Fabric Loader: 0.18.5+
  • Fabric API: 0.147.0+26.1.2
  • Java: 25

可选:

  • Mod Menu 用于更简洁的配置入口点

许可证

本项目根据 MIT 许可证 进行许可。