ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Minecraft单人存档自动备份:MCDR与PB插件实战指南

Minecraft单人存档自动备份:MCDR与PB插件实战指南 1. 单人存档为什么也需要自动备份1.1 从一次惨痛的存档损坏说起去年冬天我在玩一个纯生存存档连续肝了三个多月从最初的木头房子一路发展到全物品分类仓储加凋灵骷髅农场。那天晚上我在下界挖远古残骸游戏突然卡死强制结束进程之后重新进入世界发现区块数据直接损坏了——出生点附近的地形变成了一片虚空箱子里的东西全部消失。我当时整个人是懵的因为那个存档我从来没有做过任何备份。这件事之后我开始认真研究单人游戏的自动备份方案。很多人觉得备份是服务器才需要操心的事情单人存档随便复制一下文件夹不就行了但实际情况是手动复制这件事你坚持不了几天就会忘记而存档损坏、误删、游戏崩溃这些意外恰恰就发生在你忘记备份的那一天。所以核心需求不是能不能备份而是能不能自动、定时、无感地备份。MCDR配合PB备份插件就是解决这个问题的绝佳组合。MCDR全称MCDReforged是一个基于Python的Minecraft服务端管理框架它可以在原版服务端之上挂载各种插件来实现自动化功能。PB则是Prime Backup的缩写是MCDR生态里最成熟的备份插件之一。把这两个东西搭起来之后你的单人存档就能实现定时自动备份、手动触发备份、备份文件自动清理、甚至还能通过游戏内指令直接回档。1.2 这套方案到底适合谁先说清楚适用人群。如果你玩的是纯原版单人存档用MCDR启动服务端然后自己连进去这套方案完全可行。如果你用的是整合包只要整合包的服务端能正常启动MCDR也能挂上去。甚至你平时是用HMCL或者PCL这类启动器开单人世界的也可以改成用服务端加MCDR的方式来玩体验上几乎没有区别但多了一层自动备份的保障。唯一需要注意的是MCDR是服务端框架它管理的是服务端进程。也就是说你需要以服务端的形式来运行游戏而不是直接开单人世界。对于习惯了打开启动器点单人游戏的玩家来说这可能需要一点适应但实际操作下来你会发现服务端模式反而更稳定因为服务端的Tick机制比客户端内置的服务端更可控。1.3 整体方案的核心优势为什么选MCDR加PB而不是其他方案我对比过几种常见的做法。用系统自带的计划任务加批处理脚本复制存档文件夹这是最原始的方式优点是简单缺点是备份时如果游戏正在写入数据复制出来的存档可能是不完整的回档之后照样损坏。用一些存档管理工具功能是有了但往往只支持特定启动器通用性差。PB插件的核心优势在于它是通过MCDR在服务端层面执行备份的可以做到备份前自动执行save-off和save-all确保所有区块数据都落盘之后再复制文件备份完成后再恢复save-on。这个流程保证了备份文件的完整性是手动复制完全做不到的。而且PB支持增量备份和自动清理策略不会让你的硬盘被几百个备份文件塞满。2. 环境搭建与MCDR安装实操2.1 准备工作服务端与Python环境在开始之前你需要准备几样东西。第一是Minecraft服务端jar文件版本要和你原来的存档版本一致比如你原来玩的是1.20.1那就下载1.20.1的服务端。第二是Python运行环境MCDR要求Python 3.8以上推荐直接用3.10或3.11稳定性和兼容性都比较好。第三是你的原始存档文件夹通常在.minecraft/saves/你的世界名下面。Python安装的时候有一个坑要注意在Windows上安装时务必勾选Add Python to PATH否则后面命令行里调用python会提示找不到命令。安装完成之后打开命令行输入python --version确认版本号正确输出。如果系统里同时有Python 2和Python 3可能需要用python3来调用这个根据实际情况调整。MCDR的安装本身非常简单一条pip命令就能搞定pip install mcdreforged如果你网络环境不太顺畅可以加上国内镜像源pip install mcdreforged -i https://pypi.tuna.tsinghua.edu.cn/simple安装完成之后在你想要存放服务端的目录下打开命令行执行mcdreforged init这个命令会生成MCDR的标准目录结构包括config.yml、permission.yml、plugins文件夹和server文件夹。server文件夹就是放服务端jar的地方plugins文件夹放插件。2.2 配置MCDR启动参数初始化完成之后打开config.yml有几个关键配置需要改。首先是start_command这个决定了MCDR用什么命令启动服务端。如果你用的是原版服务端改成这样start_command: java -Xms2G -Xmx4G -jar server.jar nogui内存参数根据你电脑的实际配置调整单人玩的话2G到4G足够了。nogui参数建议保留因为MCDR本身提供了控制台界面不需要再弹出一个图形窗口。然后是working_directory这个指向服务端的工作目录默认是server文件夹。你需要把你的存档文件夹放到server目录下并且把服务端jar也放进去。服务端的server.properties里level-name要设置成你存档文件夹的名字。还有一个重要配置是handler保持默认的vanilla_handler就行它负责解析服务端的日志输出。如果你用的是Paper或者Fabric服务端可能需要换成对应的handler不过大部分情况下vanilla_handler也能正常工作。2.3 首次启动与验证配置好之后在MCDR根目录执行mcdreforged start如果一切正常你会看到MCDR的控制台界面显示服务端正在启动。等看到Done的提示之后打开游戏客户端在多人游戏里添加服务器地址localhost或者127.0.0.1就能连进去了。这里有个细节要注意用服务端模式玩单人游戏你的玩家数据是存在服务端目录下的和你原来单人存档里的玩家数据是分开的。如果你想让原来的背包、经验、位置都保留需要把原来.minecraft/saves/世界名/playerdata/你的UUID.dat复制到服务端存档目录的对应位置。UUID可以在原来的usercache.json里找到。提示第一次用服务端模式进入存档时建议先备份一份原始存档确认一切正常之后再删除旧的单人存档避免数据丢失。3. PB备份插件安装与核心配置3.1 获取并安装PB插件PB插件的全称是Prime Backup你可以在MCDR的插件仓库或者GitHub上找到它。下载下来是一个.mcdr格式的文件直接丢进plugins文件夹就行。然后重启MCDR插件会自动加载。重启之后在MCDR控制台输入!!pb如果能看到插件的帮助信息说明安装成功了。PB的所有指令都以!!pb开头后面跟不同的子命令。常用的有!!pb make手动创建备份、!!pb list列出所有备份、!!pb restore恢复指定备份。3.2 配置文件详解PB的配置文件在config/prime_backup/config.json第一次加载插件之后会自动生成。这个配置文件内容比较多我挑几个最关键的讲。backup_interval控制自动备份的间隔单位是秒。默认好像是3600秒也就是一小时一次。对于单人存档来说我建议设置成1800秒也就是半小时一次。太频繁了会占用较多磁盘IO太稀疏了又起不到保护作用。backup_count或者叫max_backup_count控制保留多少个备份。PB默认好像是保留10个。如果你半小时备份一次10个备份只能覆盖5小时建议改成20到30个。不过PB支持增量备份实际占用的磁盘空间不会线性增长所以不用太担心硬盘被塞满。backup_on_server_start和backup_on_server_stop这两个选项建议都打开。服务端启动时备份一次可以保留一个上次关闭时的状态服务端关闭时备份一次确保每次关服都有存档快照。还有一个turn_off_auto_save选项这个控制备份时是否自动关闭服务端的自动保存。建议打开这样PB会在备份前执行save-off备份完成后执行save-on保证备份文件的一致性。3.3 备份策略的参数计算这里我详细说一下备份策略怎么定。假设你每天玩3个小时半小时备份一次那一天会产生6个备份。如果保留30个备份可以覆盖5天的游戏时间。但实际上PB的增量备份机制是这样的第一次备份是全量后续备份只存储变化的区块数据。所以30个备份占用的空间可能只有全量备份的2到3倍而不是30倍。以我自己的存档为例全量备份大约800MB30个增量备份加起来大概2.5GB。这个空间占用对于现在的硬盘来说完全可以接受。如果你觉得还是太大可以把备份间隔调成1小时保留数量调到20个这样覆盖时间差不多但空间占用更小。另外PB还支持备份压缩在配置里可以开启compress选项。开启之后备份文件会以压缩格式存储空间占用能减少30%到50%代价是备份和恢复的速度会慢一些。对于单人存档来说这个代价完全可以接受。4. 游戏内备份操作与回档实战4.1 常用指令速查PB安装好之后你可以在游戏内聊天栏直接输入指令来操作备份不需要切到MCDR控制台。前提是你的游戏ID在MCDR的权限配置里有足够的权限等级。默认情况下MCDR的permission.yml里管理员权限是给特定玩家或者控制台的你需要在里面加上自己的游戏ID。常用的游戏内指令有这些指令功能权限要求!!pb make立即创建一个备份管理员!!pb make 备注创建带备注的备份管理员!!pb list列出最近的备份普通玩家!!pb restore 编号恢复到指定备份管理员!!pb delete 编号删除指定备份管理员!!pb confirm确认危险操作管理员!!pb restore是一个危险操作执行之后PB会要求你输入!!pb confirm来二次确认。这个设计是为了防止误操作因为恢复备份会覆盖当前存档如果当前存档里有你刚建好的建筑恢复之后就没了。4.2 手动备份的典型场景什么时候需要手动备份我总结了几种情况。第一种是准备做危险操作之前比如要去打末影龙、要去远古城市探索、要大规模改造地形。这些操作有可能导致死亡掉落或者地形破坏提前备份一下心里踏实。第二种是安装或卸载模组之前。虽然PB备份的是存档数据不包含模组本身但如果新模组导致存档损坏你可以回档到安装之前的状态。第三种是服务器要长时间关闭之前比如你要出差一周不玩关服之前手动备份一次确保存档处于一个已知的良好状态。手动备份的指令很简单在游戏里输入!!pb make 打龙前备份PB就会创建一个带备注的备份。备注信息会显示在备份列表里方便你以后识别。4.3 回档操作的完整流程回档的流程稍微复杂一点我详细走一遍。假设你发现存档出了问题想要回到今天早上的状态。首先输入!!pb list查看备份列表找到今天早上的那个备份记下它的编号。然后输入!!pb restore 编号PB会提示你这是一个危险操作需要确认。这时候你有两个选择输入!!pb confirm直接恢复或者输入!!pb abort取消。确认之后PB会执行恢复流程这个过程可能需要几十秒到几分钟取决于备份的大小。恢复完成后PB会提示你重启服务端。重启之后进入游戏存档就回到了备份时的状态。注意恢复备份之前PB会自动把当前存档也备份一份防止你恢复错了想再恢复回来。这个自动备份的备注通常是before restore之类的在备份列表里能找到。4.4 备份文件的存储位置与迁移PB的备份文件默认存在config/prime_backup/backups目录下每个备份是一个独立的文件夹里面包含存档数据和元信息。如果你想把这些备份迁移到另一台电脑直接把整个backups文件夹复制过去就行。PB的备份格式是跨平台的Windows上创建的备份在Linux上也能恢复。如果你想把备份存到外置硬盘或者网络存储上可以在PB配置里修改backup_path指向目标目录。不过要注意如果目标目录是网络存储备份和恢复的速度会受网络带宽影响建议只在本地备份完成后再手动复制到网络存储做冷备。5. 常见问题排查与避坑经验5.1 插件加载失败怎么办PB插件加载失败最常见的原因是MCDR版本太旧。PB的较新版本通常要求MCDR 2.10以上如果你的MCDR是更早的版本需要先升级MCDR。升级命令是pip install --upgrade mcdreforged另一个常见原因是Python依赖缺失。PB可能依赖一些额外的Python库比如watchdog或者portalocker。如果MCDR控制台提示缺少某个模块用pip装上就行。具体的依赖列表可以在PB的文档或者插件信息里看到。还有一种情况是插件文件损坏比如下载过程中网络中断导致文件不完整。解决办法很简单重新下载一次确保文件大小和来源页面显示的一致。5.2 备份文件过大怎么处理如果你的存档特别大比如装了大量模组或者跑了很久的生存存档备份文件可能会达到几个GB。这时候可以考虑几个优化方向。第一是开启压缩前面提到过能减少30%到50%的空间。第二是调整备份间隔从半小时改成1小时减少备份数量。第三是定期清理旧备份PB支持按时间或者按数量自动清理配置好之后不用手动管。如果这些还不够可以考虑只备份关键数据。PB支持排除特定文件夹比如你可以把logs文件夹排除掉因为日志文件通常很大但没什么恢复价值。在配置文件的excluded_folders里加上就行。5.3 恢复备份后游戏异常恢复备份之后如果游戏出现异常比如区块加载错误、实体消失通常是因为备份文件和当前服务端版本不匹配。比如你用1.20.1的备份恢复到1.20.4的服务端上就可能出问题。解决办法是确保服务端版本和备份时的版本一致。另一个可能的原因是恢复过程中服务端没有完全关闭。PB恢复备份时要求服务端处于关闭状态如果你在服务端还在运行的时候执行恢复可能会导致文件冲突。正确的流程是先关闭服务端然后在MCDR控制台执行恢复指令恢复完成后再启动服务端。5.4 权限配置踩坑记录MCDR的权限系统是基于权限等级的默认有0到4级4级是最高权限。PB的备份和恢复指令通常需要3级或4级权限。你需要在permission.yml里给自己配置足够的权限。配置格式大概是这样的default_permission: min_permission_level: 0 permission: - your_game_id如果你在游戏里输入!!pb make提示权限不足就是这里没配好。改完permission.yml之后需要执行!!MCDR reload permission重载权限配置不需要重启服务端。提示权限配置里的游戏ID区分大小写必须和你游戏内的ID完全一致。如果ID里有特殊字符需要用引号包裹。6. 进阶玩法与自动化扩展6.1 定时备份与自动清理的组合策略PB的自动备份和自动清理可以组合出一套很舒服的策略。我的配置是这样的备份间隔1800秒保留最近48个备份同时开启按时间清理删除7天前的备份。这样正常情况下保留最近24小时的备份同时7天内的备份也不会被删掉兼顾了近期高频保护和长期存档留存。自动清理的配置在config.json的cleanup部分可以设置max_age和max_count两个维度。max_age按天数算max_count按数量算两个条件满足任意一个就会触发清理。建议两个都设置避免单一维度失控。6.2 结合计划任务做异地备份PB本身只负责本地备份如果你想要异地备份可以结合系统的计划任务来实现。比如在Windows上创建一个计划任务每天凌晨3点执行一个批处理脚本把PB的备份目录复制到外置硬盘或者网络存储上。这样即使本地硬盘坏了备份也还在。批处理脚本大概长这样echo off xcopy D:\mcdr\config\prime_backup\backups E:\mc_backup\backups /E /I /Y /D/D参数表示只复制比目标新的文件这样可以实现增量复制速度快很多。Linux上可以用rsync命令效果类似。6.3 多存档管理与切换如果你同时玩多个存档PB也支持多存档管理。你可以在MCDR的server目录下放多个服务端实例每个实例用不同的端口和存档目录。PB会为每个实例单独维护备份列表互不干扰。切换存档的时候只需要改一下MCDR的start_command指向不同的服务端jar或者用不同的MCDR配置文件启动。不过多存档管理会增加一些复杂度建议先把单存档的备份流程跑通确认稳定之后再考虑扩展。毕竟备份的核心目的是保护存档稳定可靠比功能丰富更重要。6.4 备份验证与恢复演练最后说一个很多人忽略的环节备份验证。你备份了一堆文件但从来没试过恢复怎么知道备份是有效的建议每隔一段时间做一次恢复演练找一个不重要的备份恢复到测试用的服务端上确认能正常进入游戏、数据完整。这个习惯能帮你在真正需要回档的时候避免备份了但恢复不了的尴尬。恢复演练的流程和正常恢复一样只是恢复到一个独立的测试实例上不影响你正在玩的存档。演练完成之后把测试实例删掉就行。我一般每个月做一次花不了几分钟但心里踏实很多。提示恢复演练之前记得把测试实例的端口改成和主实例不一样避免端口冲突。测试实例也不需要对外开放自己本地连进去验证一下就行。
返回列表