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

推荐订阅源

P
Proofpoint News Feed
博客园 - 聂微东
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
罗磊的独立博客
H
Help Net Security
L
LangChain Blog
T
Threat Research - Cisco Blogs
量子位
S
Securelist
Last Week in AI
Last Week in AI
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
The Hacker News
The Hacker News
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Blog of Author Tim Ferriss
T
Threatpost
Security Latest
Security Latest
P
Palo Alto Networks Blog
Microsoft Security Blog
Microsoft Security Blog
NISL@THU
NISL@THU
F
Full Disclosure
WordPress大学
WordPress大学
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Heimdal Security Blog
J
Java Code Geeks
Recorded Future
Recorded Future
Hugging Face - Blog
Hugging Face - Blog
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42
B
Blog RSS Feed
月光博客
月光博客
C
Cisco Blogs
V
Visual Studio Blog
D
DataBreaches.Net
H
Hacker News: Front Page
博客园 - 叶小钗
N
News and Events Feed by Topic
爱范儿
爱范儿
A
Arctic Wolf

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 的对应关系,其他都挺顺利的。