惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

ncc的个人网站

Goland Update Delve frp反向代理群晖WebDAV服务器 1panel安装的Mysql版本从5.7升级到8.4.5 备份mc服务器脚本 威联通使用screen报错 Cannot find terminfo entry for 'screen.linux' Brew No Available Formula Gitea迁移和SSH容器直通 QQ邮箱文件夹重新开启通知 Act_runner 使用 supervisor 启动无法正常识别到 asdf 设置的环境问题(二) 将博客从Typecho迁移到Hugo
MCSManager 数据备份与迁移实践
FGHWETT · 2026-06-26 · via ncc的个人网站

最近因为服务器环境调整,需要把 MCSManager 上的 Minecraft 服务器迁移到新实例。这里记录一下整个备份和恢复的过程,方便以后参考。

备份数据

首先,进入 MCSManager 的工作目录,找到实例数据所在的文件夹。一般来说,数据存放在 daemon/data/InstanceData/ 下,每个实例都有一个独立的 ID 文件夹。

备份的时候,建议把一些可以重新生成的文件排除掉,比如 BlueMap 的渲染数据。这样可以减小备份体积,恢复时重新生成就好了。

1
2
3
4
5
## 切换到工作目录
cd daemon/data/InstanceData/

## 备份数据,排除掉bluemap文件夹(蓝图目录可以重新生成)
tar --exclude='9a527602eda447f185a8b85a905ba880/bluemap' -czvf mc1.21.0-20260614-1748.tar.gz 9a527602eda447f185a8b85a905ba880

用 Docker Compose 来部署是最省心的方式,直接用官方镜像即可:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
services:
  web:
    container_name: mc-web
    image: githubyumao/mcsmanager-web:v10.16.2
    restart: unless-stopped
    ports:
      - "23333:23333"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./web/data:/opt/mcsmanager/web/data
      - ./web/logs:/opt/mcsmanager/web/logs

  daemon:
    container_name: mc-daemon
    image: githubyumao/mcsmanager-daemon:v10.16.2
    restart: unless-stopped
    ports:
      - "24444:24444"
    environment:
      # 这里要改成你实际的 compose 文件目录
      MCSM_DOCKER_WORKSPACE_PATH: ${实际compose文件目录}/mcsmanager/daemon/data/InstanceData
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./daemon/data:/opt/mcsmanager/daemon/data
      - ./daemon/logs:/opt/mcsmanager/daemon/logs
      - /var/run/docker.sock:/var/run/docker.sock

启动之后,第一次访问会要求设置管理员账号和密码。登录后你会发现默认是没有节点的,需要手动添加。

这里有个坑:添加节点的时候,建议使用主机的内网 IP,而不是 localhost127.0.0.1,否则后面可能会出现各种奇怪的连接问题。

节点的密钥可以在 daemon/data/Config/global.json 文件里找到,里面的 key 字段就是。

创建应用实例并恢复数据

节点添加完成后,需要创建一个新的应用实例:

  1. 进入「应用实例」→「新建应用」→「直接创建」
  2. 选择对应的节点
  3. 实例类型、启动命令、关闭命令需要和之前保持一致

以 Paper 服务端为例,启动命令大概是这样的:

1
java -Xms128M -XX:MaxRAMPercentage=95.0 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -jar paper-1.21-37.jar

接下来就是把备份的数据恢复过来:

1
2
3
4
5
6
7
8
9
## 切换到新的 daemon/data/InstanceData/ 目录,找到刚才创建的实例文件夹
cd daemon/data/InstanceData/

## 解压备份文件
tar -xzvf mc1.21.0-20260614-1748.tar.gz

## 把解压出来的文件夹名改成新实例的 ID
## 假设新实例 ID 是 2e8426c08602a353fdf3419968b32bd8
rm -rf 2e8426c08602a353fdf3419968b32bd8 && mv 9a527602eda447f185a8b85a905ba880 2e8426c08602a353fdf3419968b32bd8

构建 Docker Java 环境镜像

如果你之前的服务端是跑在 Docker 容器里的,那还需要构建对应的 Java 环境镜像。

在 MCSManager 面板中:「节点」→ 找到对应节点卡片右上角的「镜像管理」→「新增镜像」→ 选择「创建 OpenJDK17 环境镜像」。

根据你的服务端版本调整 Java 版本,Dockerfile 大致如下:

1
2
3
4
5
6
7
8
9
# 这是 Java17 的环境镜像,其他版本改一下 FROM 那行就行,比如:FROM eclipse-temurin:21
FROM eclipse-temurin:17
RUN echo "zh_CN.UTF-8 UTF-8">/etc/locale.gen && locale-gen
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8
ENV TZ=Asia/Shanghai
RUN mkdir -p /workspace
WORKDIR /workspace

创建镜像的时候,镜像名和版本标识最好也改一下,比如 mcsm-eclipse-temurin:21,这样比较好辨认。

构建完成后,点击「回到镜像列表」,多刷新几次,直到能看到新的镜像为止。

配置 Docker 容器启动

镜像准备好了,接下来就是把应用实例改成 Docker 模式启动:

  1. 「应用实例」→ 找到对应的实例卡片 →「应用实例设置」→「容器化」
  2. 按照下面的配置来设置:
    • 启用 Docker 容器:打开
    • 选择 Docker 配置:选择对应的 Java 版本
    • 网络模式:选 host(如果只跑一个服务器的话,host 模式最省事)
    • 开放端口:如果网络模式不是 host,这里需要填。25565 是游戏端口,8100 是 BlueMap 的 Web 端口,其他端口按需添加
    • 容器名:建议填一个固定名称,不然每次启动都是随机名字

配置完成后,点击启动就行了。


折腾完这一套流程,服务器就顺利跑起来了。整个过程说起来步骤不少,但其实跟着操作一遍也就十几分钟的事情。主要是备份和恢复数据那块需要注意一下实例 ID 的对应关系,其他都挺顺利的。