使用轻量搭建MC服务器并自动备份存档至轻量COS

avatar
作者
筋斗云
阅读量:0

在存档意外炸档时,备份就显得尤为重要。

本文以Minecraft 1.18.2为例,教你如何使用轻量搭建一个MC服务器,并定时将存档备份入轻量COS,节省本地空间。

前期准备

  • 一台安装了Linux原版系统的轻量(因为目前轻量COS仅支持挂载 Linux 系统镜像,不支持容器或自定义镜像)
  • 一个和轻量大区相同的轻量COS套餐(分为中国大陆和海外两个大区)

准备Java环境

因为不同的MC版本需要的Java版本不同,也为了不破坏本地环境,准备Java环境不添加环境变量

创建文件夹
cd /root mkdir mc_server cd mc_server mkdir jdk cd jdk 
下载Java 17
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 
解压、重命名
tar -zxvf jdk-17_linux-x64_bin.tar.gz mv jdk-17.0.10 jdk17 
测试
/root/mc_server/jdk/jdk17/bin/java --version 

如果显示如下,代表环境准备完成

root@VM-16-11-debian:~/mc_server/jdk# /root/mc_server/jdk/jdk17/bin/java --version java 17.0.10 2024-01-16 LTS Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240) Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing) 

部署Minecraft 1.18.2服务端

新建文件夹
cd /root/mc_server mkdir mc cd mc mkdir mc_1_18_2 cd mc_1_18_2 
下载MC服务端
wget https://dl1.9kr.cc/game/minecraft/server/minecraft_server.1.18.2.jar 
运行MC服务端

这里的-Xms指的是初始内存,-Xmx指的是最大内存,按需设置。

我的轻量为4G内存,留512M给系统用,设置最大内存为3584M。

/root/mc_server/jdk/jdk17/bin/java -Xms512M -Xmx3584M -jar minecraft_server.1.18.2.jar nogui 

因为没有设置配置文件,服务端会在不久后退出

[03:50:12] [ServerMain/ERROR]: Failed to load properties from file: server.properties [03:50:12] [ServerMain/WARN]: Failed to load eula.txt [03:50:12] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. 
更改配置文件

修改EULA文件,同意EULA协议。

打开eula.txt文件,把

eula=false 

改为

eula=true 

开启服务端RCON功能

打开server.properties文件,修改如下配置:

# RCON端口号,默认或者按需设置 rcon.port=25575 # 改为true开启rcon功能 enable-rcon=true # rcon密码,自行设置 rcon.password=Aus98s7js. 

关闭在线验证(按需)

打开server.properties文件,修改如下配置:

如果你没有国际版账号,需要把:

online-mode=true 

改为:

online-mode=false 

对应的是HMCL启动器设置的离线模式

再次运行服务端
/root/mc_server/jdk/jdk17/bin/java -Xms512M -Xmx3584M -jar minecraft_server.1.18.2.jar nogui 

开始生成世界

当看到如下界面时,代表服务器启动成功

到轻量控制台放通防火墙端口

进入轻量云控制台,选择目标服务器,按照如下图在防火墙放通MC端口

挂载轻量COS到轻量应用服务器

进入轻量对象存储,点击创建存储桶

创建一个与服务器同地域的存储桶,例如我的轻量服务器在北京,就创建一个北京的存储桶

点击刚创建的桶,进入配置页面

添加一个挂载,注意这个服务器挂载目录,后面脚本会用到

等待挂载完成

挂载成功后,可以到服务器运行如下命令:

echo "abc" > /lhcos/1.txt 

进入桶的文件列表,如果看到了刚才的文件,说明挂载没问题

编写自动备份脚本

流程
  1. 通过RCON关闭自动保存
  2. 通过RCON保存现有存档数据
  3. 将存档文件夹压缩打包
  4. 通过RCON开启自动保存
  5. 将压缩的存档文件移动到轻量COS
Python脚本

其中lhcos_path为轻量COS在本地的挂载路径,也就是上一章节说到的挂载时要记得的路径。

/root/mc_server/mc/mc_1_18_2/world为待备份的存档文件夹,可以按需更改。

import time,os import mcrcon import shutil  host = "服务器IP" port = 25575 password = "Aus98s7js."  lhcos_path = "/lhcos/" save_folder = "/root/mc_server/mc/mc_1_18_2/world"  mcr = mcrcon.MCRcon(host, password, port) mcr.connect() for i in range(5):     a = mcr.command("say {} 秒后开始备份".format(5-i))     time.sleep(1) a = mcr.command("say 开始备份...") a = mcr.command("save-off") a = mcr.command("save-all") zip_name = time.strftime("%Y%m%d_%H%M%S", time.localtime(time.time()))  if not os.path.exists(save_folder):     a = mcr.command("say [ERROR] 待压缩路径 {} 不存在".format(save_folder)) else:     a = mcr.command("say 备份到 {}.zip".format(zip_name))     shutil.make_archive(zip_name, 'zip', save_folder)     os.system("mv {} {}".format(zip_name+".zip", lhcos_path))  a = mcr.command("save-on") a = mcr.command("say 备份完成") 

开启定时备份

首先,将上面的脚本保存到/root/mc_server/backup.py

再在同一个目录新建一个backup.sh,输入如下内容:

cd /root/mc_server python3 backup.py 

使用crontab -e命令编辑本机的计划任务,追加如下内容(每24小时备份一次):

02 4 * * * root sh /root/mc_server/backup.sh 

保存,然后用如下命令重启服务/etc/init.d/cron restart

结果

如图为自动备份启动时服务器公屏显示的结果

连接MC服务器

进入HMCL下载页下载你系统的HMCL


Blog: 使用轻量COS自动备份我的世界游戏存档

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!