Skip to content

管理和维护服务器

在服务端根目录中,有很多文件和文件夹,以 paper 服务端根目录的文件夹为例,根据作用,可分为以下几类,它们的作用如下。

这类文件在服务器运行时被调用,是服务器必不可少的核心文件。

文件名详解
paper-xx.xx.x-x.jar毋庸置疑,这是服务器的核心 jar 文件,运行服务端需要运行此 jar 文件。
libraries存放 Minecraft 运行所需的 Java 库(如 authlib、commons-lang 等)。首次启动时若缺失,Paper 会自动从 Mojang 官方源下载。
world服务器的存档文件夹,如果你没有修改 server.properties 文件的 level-name 选项,默认为 world,若修改,则为你修改的名称
world_nether服务器的下界维度文件夹,如果你没有修改 server.properties 文件的 level-name 选项,默认为 world_nether,若修改,则为你修改的名称 + _nether
world_the_end服务器的下界维度文件夹,如果你没有修改 server.properties 文件的 level-name 选项,默认为 world_the_end,若修改,则为你修改的名称 + _the_end

这些文件控制着服务器的行为,

文件名详解
config存服务器的配置文件的文件夹,一般存放着较原版有第三方改动的配置文件,如 paper-global.ymlpaper-world-defaults.yml。在模组服中,模组的配置文件在该目录下。
paper-global.yml用于更改关于 paper 的全局配置。
paper-world-defaults.yml用于更改关于世界的配置。
server.properties服务器配置文件,mojang 官方服务端核心自带的配置文件。
banned-ips.jsonip 封禁列表,存放着通过 /ban-ip 命令封禁的玩家ip。
banned-players.json玩家封禁列表,存放着通过 /ban 命令封禁的玩家以及玩家 uuid。
commands.yml添加自定义命令的配置文件。
ops.json管理员权限名单。
server-icon.png服务器图标,一般不会自动生成,需要玩家手动上传,尺寸与格式必须为 64x64 像素的 .png 格式,名称也必须为 server-icon.png。
bukkit.ymlbukkit 系配置文件,paper 作为 bukkit 的下游服务端核心,存放关于 bukkit 系配置。
spigot.ymlspigot 系配置文件,paper 作为 spigot 的下游服务端核心,存放关于 spigot 服务端配置。

plugins 为服务器的插件目录,插件的 jar 文件应该放在此目录下,插件的配置文件在 plugins/your_plugin_name 目录下。

在服务端根目录的 world 文件夹内,有以下文件,他们存放着存档的数据,应优先备份此文件夹。

文件名说明
level.dat存档的核心文件,记录着世界的元数据,如游戏规则,游戏模式,种子以及是否开启作弊等。
advancements存储锁定的游戏进度和成就,每个玩家对应一个文件,命名格式为 player's uuid.json 文件
data存放世界级别的自定义数据,包括:地图物品的图像数据(idcounts.txt、maps/)、书与笔的内容(通过数据包或命令生成的持久化文本)等。
datapacks此处放置你的数据包。
region存放方块数据(地形、建筑等)。每个 .mca 文件管理 32×32 个区块(即 512×512 方块),文件名格式为 r.x.z.mca,其中 x = floor(方块X / 512)z = floor(方块Z / 512)
entities存放实体数据(生物、掉落物、矿车、容器内物品等),结构同 region
poi存放兴趣点(Points of Interest),如村民工作站、床、钟等,用于 AI 寻路,结构同上。
playerdata存放玩家的游戏内数据,如背包中的物品,所处的维度机及其坐标,已经获得的经验值等,每个玩家对应一个文件,命名格式为 player's uuid.dat

一般来说,仅需要备份存档即可,可以选择直接压缩为 .zip 格式来下载到本地来备份存档,对于 Linux 系统,可以选择编写一个 Shell 备份脚本来进行快捷备份,下面是柏茯灵自己为自己编写的备份脚本,可以在服务端根目录运行此脚本来备份存档。(编程能力有限还请见谅www)

此脚本会备份区域 (-2,-2)~(2,2) 之间的所有区域文件

backup.sh
x_overworld=("-2" "-1" "0" "1" "2")
y_overworld=("-2" "-1" "0" "1" "2")
files_all=("region" "entities" "poi")
for files_1 in ${files_all[@]}; do
mkdir -p ./backup/world/${files_1}
for x_1 in ${x_overworld[@]}; do
for y_1 in ${y_overworld[@]}; do
cp ./world/${files_1}/r.${x_1}.${y_1}.mca ./backup/world/${files_1}/
done
done
done
x_DIM_1=("-2" "-1" "0" "1" "2")
y_DIM_1=("-2" "-1" "0" "1" "2")
for files_2 in ${files_all[@]}; do
mkdir -p ./backup/world_nether/DIM-1/${files_2}/
for x_2 in ${x_DIM_1[@]}; do
for y_2 in ${y_DIM_1[@]}; do
cp ./world_nether/DIM-1/${files_2}/r.${x_2}.${y_2}.mca ./backup/world_nether/DIM-1/${files_2}/
done
done
done
x_DIM1=("-2" "-1" "0" "1" "2")
y_DIM1=("-2" "-1" "0" "1" "2")
for files_3 in ${files_all[@]}; do
mkdir -p ./backup/world_the_end/DIM1/${files_3}/
for x_3 in ${x_DIM1[@]}; do
for y_3 in ${y_DIM1[@]}; do
cp ./world_the_end/DIM1/${files_3}/r.${x_3}.${y_3}.mca ./backup/world_the_end/DIM1/${files_3}/
done
done
done
cd world
cp -r advancements data datapacks playerdata skinrestorer level.dat ../backup/world/
cd ../world_nether
cp -r advancements data datapacks playerdata skinrestorer level.dat ../backup/world_nether/
cd ../world_the_end
cp -r advancements data datapacks playerdata skinrestorer level.dat ../backup/world_the_end/
cd ..
date=$(date +%y.%m.%d)
mkdir saves
zip -r ./saves/backup-${date}.zip ./backup
rm -r ./backup

运行此脚本后,备份后的 zip 文件会被保存在服务端根目录的 saves 文件夹中。