似乎少有关于 minecraft 自动备份的脚本,在此记录一下比较野鸡的方法。如果有更好的方法请告诉我!

一、开服

MC开服一直都比较简单,以fabric为例只需要打开链接,选择好对应版本,然后下载即可。开服的指令网页里也准备好了,即 java -Xmx2G -jar XXX.jar nogui 那句指令。先运行一遍,会自动生成 eula.txt 文件,打开将里面的 false 改为 true 再重新输入开服指令即可。

二、自动备份

2.1 手工备份

先讲手工备份的方法。

有很多教程直接对 world 文件夹进行归档,然而这是存在一定的风险的,因为你在归档的同时服务器仍在运行,归档有可能是残缺的。

一个土办法是 关服-归档-再开服,但是频繁的开服关服说实话很烦,不知道有没有人用。。。。。

正确的方法是输入服务端指令 /save-off 停止自动存档,接着 /save-all 保存所有内容,接着归档,再接着 /save-on 打开自动存档。

自动备份就是简单地对于手工备份过程的自动化,并没有太多难度。。。。?

2.2 命名管道

然而仍然有一个问题困扰了我许久,就是如何在服务端后台运行的同时向其发送指令。不过后来我醒悟了,这个可以用命名管道来实现。

首先我们通过指令创建一个命名管道 mkfifo mc.fifo,然后再将其通过管道传递给服务端,即将开服指令更改为

tail -f mc.fifo | java -Xmx2G -jar XXX.jar nogui > log.log

2.3 自动脚本

有了管道就可以自由地写脚本了,这里是我写的自动备份脚本,每5分钟检测一次服务器是否有人,有人时每20分钟自动备份一次。代码非常简单就不详细介绍了。
backup.sh

mkdir backup
backup_num=10 #保留10个备份
savestate=0
while true; dosleep 5m #每五分钟检查一次是否有人echo "list" >mc.fifolatest=$(tail -1 log.log)if [[ ${latest:33:11} == "There are 0" ]]; thenhaspeople=0elsehaspeople=1savestate=1echo "say Start auto-backup service" >mc.fifofiif [ $savestate -eq 1 ]; then{echo "say Begin Backup"echo save-offecho save-alltar -cf backup/$(date +%Y%m%d_%H%M%S).tar.gz worldecho save-onecho "say Backup Completed"} >mc.fifo #一次备份cd backupdir_num=$(ls -l | wc -l)if [ $dir_num -gt $backup_num ]; then #删除过旧的备份num=$(expr $dir_num - $backup_num)ls -tr | head -$num | xargs -i -n1 rm {}ficd ..if [ $haspeople -eq 0 ]; then #若没人则停止备份savestate=0echo "say Stop auto-backup service since no player" >mc.fifofisleep 15m #每次备份至少间隔 20分钟fi
done

Minecraft 开服记录 自动备份相关推荐

  1. Minecraft开服教程

    Minecraft开服教程 如果你要和小伙伴联机时,可以选择的方法有这样几种: 局域网联机:优点:简单方便,在MC客户端里自带.缺点:必须在同一局域网内. 有些工具会带有联机功能:优点:一般是通过连接 ...

  2. 【Minecraft开服教学】使用 MCSM 面板一键搭建我的世界服务器 并使用内网穿透公网远程联机

    文章目录 前言 1.Mcsmanager安装 2.创建Minecraft服务器 3.本地测试联机 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射内网端口 5.远程联机测试 6. ...

  3. Minecraft开服器(Python编写)

    因为我和朋友经常一起玩Minecraft,但是只有我会开服,为了让他也可以开服,所以我无聊写了开服器. 现在只保留了Delta到最新的Eta版本 不说了,上Eta版本的代码! sgmain.py cl ...

  4. Minecraft开服教程,Windows搭建 我的世界(mc) 1.18.2 服务器教程

    Windows server 2019搭建 Minecraft 1.18.2 forge版服务器教程,我的世界(MC)开服教程 Linux搭建我的世界 Paper1.18.1 服务器教程:https: ...

  5. 【Minecraft开服教程】使用 MCSM 面板一键搭建我的世界服务器,并内网穿透公网远程联机

    文章目录 前言 1.Mcsmanager安装 2.创建Minecraft服务器 3.本地测试联机 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射内网端口 5.远程联机测试 6. ...

  6. Minecraft开服ipv6配置

    先说结果 拥有ipv6地址相当于有免费的公网ip(ipv4)地址,不用内网穿透,跑满家庭宽带. 需要玩家和服务端都支持ipv6才能连接 我家宽带1000Mbps下行,50Mbps上行,用cloudre ...

  7. Minecraft 开服:从入门到精通

    目录 前言 一.服务端核心介绍 为什么要说「服务端运行核心文件或是补丁安装器」 为什么我们不能直接双击 jar 运行服务端核心 到底有哪些服务端核心 1. Vanilla 2. CraftBukkit ...

  8. mysql和web文件夹_Linux使用记录---自动备份MySQL和web文件夹到windows共享路径

    环境:centos7下有两个PHP网站和MySQL数据库,需要将网站内容和数据库备份到windows共享存储上 思路:在Centos上创建临时文件夹,备份两个数据库到临时文件夹,再备份Web文件到临时 ...

  9. 【Minecraft开服】Windows搭建我的世界MC服务器「公网远程联机」

    文章目录 1. Java环境搭建 2.安装我的世界Minecraft服务 3. 启动我的世界服务 4.局域网测试连接我的世界服务器 5. 安装cpolar内网穿透 6. 创建隧道映射内网端口 7. 测 ...

最新文章

  1. 容器化部署实践之Django应用部署(二)
  2. window xp Apache与Tomcat集群配置--转载
  3. 【图像分割模型】以RNN形式做CRF后处理—CRFasRNN
  4. 大学生java项目创意申请表_基于java ee的大学生作品展示系统.pdf
  5. 计算机设备抽象,计算机系统原理(三) 金字塔形的存储设备、操作系统的抽象概念...
  6. stein法求gcd 学习笔记
  7. 如何进行服务器选购[转]
  8. sublime安装python库_Mac OS 轻松用 Sublime Text 3 配置Python编译环境
  9. docker go get问题_创建优化的Go镜像文件以及踩过的坑
  10. python中的as是什么意思_python中as用法实例分析
  11. Linux分区类型EXT2、EXT3、EXT4详解
  12. N56vz难以关闭触摸板的问题(转载)
  13. VSCODE原装1.7版本百度网盘download
  14. 三相桥式全控整流电路simulink仿真_三相二极管桥式整流电路分析与仿真
  15. 【密码术】openssl椭圆曲线密钥对生成
  16. oracle-12801,ORA-12801
  17. VC实现EXCEL转换为CSV格式
  18. 用tig来查看git log
  19. java全jit编译_Javac编译与JIT编译
  20. BGP------BGP工作原理、BGP属性及选路原则

热门文章

  1. 什么是PON(无源光纤网络)、PON的发展及演进
  2. php 五角星,php使用GD库画五角星
  3. Cuil搜尋引擎 挑戰Google
  4. SpringBoot 在main或者普通类中条用service接口
  5. 概率论复习题+部分详解
  6. 银河麒麟V10(飞腾2000+ ARM)环境下构建达梦V8数据库容器镜像
  7. 复数和向量的函数运算
  8. Python学习之学校教学( 已知复数,请写出它的模、实部、虚部及共轭复数)
  9. html毕业答辩ppt,毕业论文答辩PPT怎么写? 经验告诉你该这样
  10. 搜狗怎么做收录?我们来看看搜狗官方的回答