首页 > 编程语言 >使用Python自动备份MC服务器存档至轻量COS

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

时间:2024-07-23 21:29:15浏览次数:21  
标签:COS MC mc 轻量 备份 server root mcr

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

本文以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启动器设置的离线模式

1721738937985.jpg

再次运行服务端

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

开始生成世界

1721738953695.jpg

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

1721738965960.jpg

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

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

1721738977502.jpg

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

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

1721738990442.jpg

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

1721739005021.jpg

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

1721739020885.jpg

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

1721739030489.jpg

等待挂载完成

1721739040497.jpg

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

echo "abc" > /lhcos/1.txt

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

1721739051764.jpg

编写自动备份脚本

流程

  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

结果

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

1721739063830.jpg

连接MC服务器

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


Blog: https://www.9kr.cc/archives/505/

标签:COS,MC,mc,轻量,备份,server,root,mcr
From: https://www.cnblogs.com/1bit/p/18319681

相关文章

  • CertEnumCertificatesInStore 函数
     CertEnumCertificatesInStore函数用于枚举和读取Windows操作系统中的证书存储区中的证书。这些证书存储区是在操作系统中管理证书的地方。根据Windows操作系统的不同版本,证书存储区的位置可能会有所不同,但通常包括以下常见的存储区:当前用户的个人证书存储区:这个存......
  • STM32F429IGT6 STMCubeMX PWM 控制 180 舵机
    设置PWM对应引脚PA2![[QQ_1721613625998.png]]定时器2受APB1控制![[QQ_1721613709674.png]]配置时钟为72MHZ![[QQ_1721613757231.png]]HAL库定义PWM/*TIM2initfunction*/voidMX_TIM2_Init(void){/*USERCODEBEGINTIM2_Init0*//*USERCODEENDTI......
  • Memcached开发(十):性能调优与监控
    目录1.Memcached性能调优1.1内存配置1.2连接数优化1.3缓存淘汰策略1.4多线程优化1.5网络性能优化2.Memcached监控2.1基础监控2.2内存监控2.3连接监控2.4LRU监控2.5命令监控3.Memcached性能调优实战3.1配置优化3.2监控报警3.3性能测试4.Memca......
  • 兼容sentry协议的轻量级监控,glitchtip
    前言上一篇文章说了重启sentry的事因为过程太折腾了,一度想过放弃sentry换成其他比较轻量级的开源监控系统这不就给我找到了另外俩个https://glitchtip.com/https://www.highlight.io/这次就来试试这个glitchtip用了之后才发现,这个也是用Django开发的,而且兼容sent......
  • WCH-LinkW无线下载仿真调试器&无线串口通信(主/从机模式)-RISC-V/ARM内核MCU无线DAP下
    LinkW-1V1 主机 硬创社搜索(WCH-LinkW):WCH-LinkW无线下载仿真调试器-硬创社 板载PCB天线:2.4G板载天线AD库资源-CSDN文库简介: WCH-LinkW无线下载仿真调试器&无线串口通信(主/从机模式)。应用场景: 1、用于RISC-V/ARM内核MCU无线DAP下载仿真调试器2、......
  • Tomcat部署及优化(企业网站架构部署与优化)
    本章结构Tomcat三个容器Tomcat由一系列的组件构成,其中核心的组件有三个:1:web容器:完成web服务器的功能。2:Servlet容器:名字为catalina,用于处理Servlet代码。3:JSP容器:用于将JSP动态网页翻译成Servlet代码。JSP容器JSP全称JavaServerPages,是一种动态网页开......
  • 在Windows安装、部署Tomcat的方法
      本文介绍在Windows操作系统中,下载、配置Tomcat的方法。  Tomcat是一个开源的Servlet容器,由Apache软件基金会的Jakarta项目开发和维护;其提供了执行Servlet和JavaServerPages(JSP)所需的所有功能。其中,Servlet容器的主要职责是执行JavaServlet和JSP——在这里,Servlet......
  • 【Remotery】 Remotery-轻量级的远程实时 CPU/GPU 分析器设计浅析
    1.Remotery简介Remotery是一个轻量级的远程实时CPU/GPU分析器,主要用于监控CPU和GPU上多线程的活动。它提供了一个C文件,可以很容易的集成到项目中,并配置一个实时监控的Web界面,可以通过远程观察和分析程序的性能,适用于监控游戏的实时运行性能和分析移动端应用的性能场景。2.Remot......
  • thinkPHP/fastAdmin框架使用memcached缓存
    1.安装memcached扩展: 2.重启PHP,在thinkPHP或者fastAdmin启用扩展(开放相应端口:例如11211) 在fastAdmin中,则需修改config.php里面的cache配置: 3.实际运行测试:  第一个信息正常显示说明运行成功,第二个显示false,说明缓存删除成功......
  • 写一个 python daemo 注册到nacos中
     """注册到nacos中的deamonnacos:2.3.2(模式:standalone)python:3.6.8nohuppython3demon.py&"""importrequestsimportthreadingimporttime#Nacos服务器地址和端口nacos_url="http://127.0.0.1:8848"#Nacos登录信息user......