javaadvancedtutorial

无损迁移 Minecraft Java 服务器到新主机

完整迁移 Java 世界、玩家数据与配置:停服备份、匹配运行环境、私密验收,再切换玩家入口,并保留可用回滚路径。

更新于 2026-08-12 · MapMC Editorial

迁移 Java 服务器不只是搬运地形文件。玩家背包、下界与末地、权限、白名单、插件数据库、模组配置和启动参数共同构成服务器状态。旧主机应一直作为回滚源保留到新主机完成私密验收,而不是上传结束就立即取消服务。

先盘点完整运行环境

记录 Minecraft 版本、Java 版本、服务端核心及构建号、加载器、模组、插件、数据包、内存与启动参数、端口、online-mode、代理方式和面板专属设置。列出全部活动世界及额外维度;多世界插件、Paper 布局或模组维度可能不在一个名为 world 的目录里。

同时确认玩家平时通过什么进入:自有域名、主机子域名、代理还是非默认端口。把这些信息写成验收表,避免新服“能启动”却遗漏经济、领地或玩家身份。

制作唯一权威的停服备份

提前通知维护窗口并禁止新玩家进入。必要时执行保存,再用控制台 stop 等待进程完全退出。随后打包整个服务器目录;若只能选择性迁移,也必须把所有世界、玩家数据、配置和依赖清单一起保留。

将备份下载到两台主机之外,记录体积;工具支持时校验上传前后的哈希。哈希只能证明传输一致,不能证明存档可玩,所以仍需实际启动测试。不要取消旧主机,也不要让它重新接受玩家。

先搭好兼容的新环境

在新主机安装匹配的 Java、Minecraft 核心、加载器、模组与插件。若从 Vanilla、Spigot、Paper、Fabric 或 Forge 之间变更,应按照对应项目的迁移文档处理世界目录,不能假定布局完全相同。

面板要求首次启动时,可先生成测试目录,随后彻底停服并归档测试文件。检查磁盘空间、文件权限、启动命令、端口分配和真实服务器根目录,防止把文件上传到未运行的另一个实例。

一次迁移世界、身份和配置

使用主机支持的文件管理器、SFTP 或迁移服务上传并解压停服快照。确认 level-name 指向主世界,主世界、下界、末地、玩家资料、进度、统计、数据包、白名单、封禁、OP、权限及插件数据库均在正确位置。

不要在工单或公开压缩包里暴露数据库密码、API 密钥。若凭据在迁移中泄露,应轮换。特别注意 online-mode 与代理身份转发:认证模式改变会让老玩家得到不同 UUID,表现为背包和权限“消失”。

用私密地址做完整验收

先不要切换公开域名。用白名单、临时地址或防火墙限制测试者,从启动第一行读到就绪,解决缺少依赖、版本不兼容、世界转换警告和权限错误。管理员与普通账号都应测试出生点、地标、各维度、背包、末影箱、进度、领地、经济、传送点和关键命令。

做一次小改动后正常停服并重启,确认改动保留且还是同一个世界。一次成功登录并不能证明写入和下一次启动都正确。

切换入口时只保留一个可写服务器

验收通过后,旧服继续保持停止,再切换 DNS、代理或公布新地址和端口。绝不能让两台服务器同时接收正式玩家,否则进度会立即分叉,两个独立变化的世界通常无法安全合并。

上线初期持续观察日志和连接错误。DNS 可能短时缓存旧地址,应明确告知玩家,不要把临时直连地址变成长期、未经保护的旁路。确认自动备份与一次真实重启后,再安排旧主机下线。

出错时整体回滚

若新服损坏数据或无法运行依赖,先停掉新服,评估测试期间是否产生需要保留的进度。最稳妥的回滚是用最后的权威快照恢复旧服并切回入口,而不是在两端零散复制几个文件。

记录失败日志和未通过的验收项,再开始下一次尝试。每次同时更换版本、目录结构和部分文件,只会让根因越来越难追踪。

迁移完成条件

  • 已记录核心、Java、模组、插件、世界和面板设置。
  • 权威备份来自干净停服,并保存在主机之外。
  • 新环境与原环境匹配,或遵循了明确迁移路径。
  • 世界、玩家身份、权限和配置作为一个整体迁移。
  • 私密环境通过日志、地标、维度、玩家数据、保存和重启测试。
  • 切换期间只有一个公开可写服务器。
  • 旧主机和离线备份在风险期内仍可回滚。

真正完成的标准不是新面板亮绿灯,而是玩家的共同历史在新主机上连续、可写并可恢复。

来源与审核依据

有官方文档时优先采用,并公开支撑事实性内容的参考来源。

结合 MapMC 使用