备份模式、链完整性与安全删除
MineBackup 配置界面的备份模式仍然是 Full、Smart、Overwrite。它们决定归档如何生成、历史如何增长,以及还原时需要哪些文件。
不要把配置界面的模式与 KnotLink 一次性请求中的 backup_mode=full|incremental 混为一谈。后者只是单次调用覆盖项,不会把配置永久改成另一种模式。
模式对比
| 模式 | 实际行为 | 优点 | 代价 |
|---|---|---|---|
Full | 每次创建包含当前完整文件状态的新归档 | 最直观,恢复依赖少 | 占用空间和首次压缩时间较高 |
Smart | 以 Full 为基线,只把变化写入 Smart 归档,并通过元数据串起链 | 高频备份更快、更省空间 | 依赖基线、记录和链顺序 |
Overwrite | 维护当前状态的覆写归档,不持续累积同样深度的历史 | 节省空间,适合临时同步 | 历史深度和回溯选择较少 |
Smart 链是如何工作的
Smart 备份需要一个可用的 Full 基线。每个 Smart 归档会记录:
- 它基于哪个 Full。
- 上一个 Smart 归档是谁。
- 新增、修改、删除和当前完整文件列表。
- 当前链状态和最后一次备份信息。
这些信息位于备份根目录 _metadata/<世界名>/ 下的 state.json 和 records/。因此,只保留归档文件而删除元数据,不能保证 Smart 归档仍然可以 Clean 还原。
什么时候会重新建立 Full
MineBackup 会在以下情况强制使用 Full:
- 目标目录没有可用的 Full 基线。
- Smart 元数据缺失、损坏或无法组成完整链。
- 1.15 → 1.16 迁移只能部分完成,继续沿用旧链不安全。
- Smart 备份数达到
maxSmartBackupsPerFull。 - 其他安全检查判断现有链不能可靠延续。
默认的 maxSmartBackupsPerFull 为 5。它只限制每个 Full 后的 Smart 数量,不等同于总历史保留数。
关键参数
skipIfUnchanged:没有变化时跳过备份,减少无意义归档。keepCount:限制自动保留的备份数量;0表示不限制。maxSmartBackupsPerFull:控制 Smart 链长度,达到阈值后建立新 Full。backupBefore:还原前先建立当前状态的兜底备份。isSafeDelete:删除 Smart 归档时尝试维护链的可还原性。
保留数量不要小到同时删掉 Full 基线和仍依赖它的 Smart 链。设置变更后先观察几次真实备份,再批量应用到其他配置。
Smart 安全删除
直接在文件管理器中删除 Smart 或 Full 归档可能造成历史、文件和元数据不一致。历史页提供的安全删除会根据链位置处理:
- 重要备份或重要目标不会被安全删除流程强行修改。
- 链尾归档可以执行普通删除。
- 链中间的 Smart 归档可能需要提取并合并变化,再提升后续目标为新的 Full。
- 任一步失败时,程序应中止并保留原有数据,而不是静默删除一半。
如果只是想隐藏一条历史,可以选择“仅删除历史记录”,不要直接删除本地归档。对重要世界,删除后应再验证一次历史和还原。
选择建议
- 新配置和关键里程碑:
Full。 - 高频 Minecraft 存档:
Smart+ 合理的链长上限 + 安全删除。 - 临时同步或只关心最新状态的目录:
Overwrite。 - 模式切换:先手动建立一个 Full,再切换并验证后续 2~3 次备份。
第一次使用或发生链异常时,优先回到 Full,不要通过手动复制、重命名或删除文件修补 Smart 链。