跳到主要内容

备份任务

备份任务是在服务器运行的状态下,将服务端的存档部分(在 Paper 服务端下是 world、world_nether、world_the_end 三个目录)打包后通过内网传输到 OSS 上的过程。归档任务是一个同类互斥任务。

前置要求

  • 实例必须处于 Running
  • 实例必须已经部署
  • 不能有正在执行的归档任务

模板变量

  • BackupOSSPath:备份存储的 OSS 路径,例如 oss://seatide/backups
  • MaxKeepCount:至多同时保留的备份数量,最低为 1,超过该数量后最旧的一个备份会被删除(类似于 LRU 策略)。

流程

一次备份任务执行以下流程:

  1. 将世界存档进行打包(使用 zip
  2. 将打包复制到 BackupOSSPath
  3. 如果数量超过 MaxKeepCount,淘汰最旧的一个备份

优化设计

  • 备份任务本质上是将归档的一个子集进行打包并上传到 BackupOSSPath。后续可以根据用户需求,自由指定需要打包的内容,而不仅限于世界存档。
  • “打包”与“压缩”有一定区别,打包仅考虑将一个目录装入到一个单一的文件中表示。而压缩在打包的基础上加入了对内容的可逆编码计算,用于优化存储空间。当前流程统一使用的 zip 工具压缩率并不高,因此一般认为与简单的打包效果相同,这也是目前设计中该工具的唯一用途。后续可考虑加入 7z、xz、zpaq 等工具提高压缩率,以满足节省空间的需求。不过,压缩是否适用于 Minecraft 存档文件有待考究。