你是不是也遇到了存档文件迁移后,还是让你创建新角色,或者是迁移后没几秒就掉线,我也遇到了一样的问题,花了好半天终于解决了,这里记录分享一下。
1. 停止服务、启动服务命令参考
迁移存档前,很重要的一点是,需要停止服务。
- 原服务器,要先停止服务,再打包存档文件。
- 目标服务器,要先停止服务,再替换存档,然后再启动服务。
这里是汇总的停止服务、启动服务的命令集合:
搭建方式 |
操作系统 |
命令 |
计算巢搭建 |
Windows |
在 PowerShell 中执行。
|
Linux |
在命令行中执行。
|
|
ECS 扩展(OOS) |
Windows |
在 PowerShell 中执行。
|
Linux |
在命令行中执行。
|
|
10 分钟 docker 手动安装 |
Linux | 在命令行中执行。
|
2.将原服务器存档迁移到新的服务器上
迁移存档最重要的是要注意存档数据保护,有时候操作不慎,就可能导致存档没了,你和帕鲁们的心血就白费了。
2.1 步骤一,备份存档
存档文件夹位置
不管里原来的服务器是本地搭建的、阿里云、或者是其他云,第一步就是找到你的存档文件,并打包备份,用于迁移。
幻兽帕鲁服务器的存档文件位置,取决于你的幻兽帕鲁服务器安装位置。
这里是一些存档文件位置参考信息:
搭建方式 |
操作系统 |
存档文件夹位置 |
计算巢搭建 |
Windows |
C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved |
Linux |
/home/ecs-assist-user/.steam/SteamApps/common/PalServer/Pal/Saved |
|
ECS 扩展(OOS) |
Windows |
C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved |
Linux |
/PalSaved |
|
10 分钟 docker 手动安装 |
Linux |
/PalSaved |
其他云服务器 |
参考上述信息,找到对应的 Saved 文件夹 也可以执行命令来找: |
停止服务
找到存档文件夹后,记得先停止服务(如果不知道如何停止服务,请查看 停止服务、启动服务命令参考)
你可以将其打包成压缩包:
- Windows 系统通常可以直接右键 > 发送到 > 压缩包 zip
- Linux 系统下可以执行命令:
tar -cvf Saved.tar ${存档文件夹位置}
,你需要替换对应路径。
Windows 服务器下载存档
远程连接到阿里云的 Windows 服务器后,可以将压缩后的存档文件,拖动到 workbench\Download 目录后,就会触发浏览器的文件下载,然后将其下载到本地。
Linux 服务器下载存档
远程连接到阿里云的 Windows 服务器后,可以在 ECS 远程连接界面,点击左上角的文件,打开文件树。在打包后的 Saved.tar 文件上右键,选择 下载文件。
2.2 步骤二,在新的服务器上替换存档
在新的 Palworld 服务器部署好了之后,就可以开始替换存档了。
停止服务
替换存档前,也需要停止新服务器上的 Palworld 服务。如果不知道如何停止服务,请查看 停止服务、启动服务命令参考。
Windows 服务器上传存档文件
- 通过控制台远程连接到 Windows 服务器桌面后,你可以打开文件夹,将本地的存档 zip 文件,直接拖拽到浏览器中,即可将存档文件传到服务器中的 workbench 文件交换目录。
- 替换存档前要先停止服务。
- 然后将 Saved.zip 文件解压,并完全替换新服务器上的 Saved 存档目录即可。
- 最后启动服务即可。
Linux 服务器上传存档文件
- 通过控制台远程连接到 Linux 服务器后,你可以打开文件树,然后找到幻兽帕鲁存档位置,将存档压缩包上传到 Pal 目录中。
- 记得替换存档前要先停止服务。
- 然后将 Saved.tar 文件解压,并完全替换新服务器上的 Saved 存档目录即可。
- 注意,记得检查 Saved 目录下所有文件的权限。如果 PalServer 是以非 root 身份运行,但你的 Saved 文件夹 owner 是 root 的话,就会出现游戏进去走两步就掉线(因为没有写存档权限)。
- 如果你不清楚文件 owner 应该怎么设置,你可以运行这个命令
chmod -R 755 Saved
。 - 如果你能确定 owner 是那个 user,你可以运行
chown -R ${user}:${group} Saved
。
- 最后启动服务即可。
常见问题
现象:迁移后还是让创建新角色
我最早看到了一些教程里告诉我,把本地或者其他服务器上的存档,迁移到新的服务器时,是这样的:
- 将 PalServer/Pal/Saved/SaveGames 文件打包,然后覆盖到新的服务器上
但这其实这是不对的,迁移完你一定会发现还是要创建新角色(等于没迁移成功)
原因
我仔细了解了一下 Palworld 的存档目录结构,以及查看了很多文章,才了解到:
- SaveGames/0/ 下面的这个名字很长的文件夹(比如我的老服务器的是:6450F8E4748******00C070DC1CFD),是 server id
- 我在新启的幻兽帕鲁 server 时,会在新的服务器上创建一个新的 SaveGames 文件夹,并且里面的 server id 是新的
- 如果用直接覆盖 SaveGames 的方式来迁移,你会发现要重新创建角色。此时你再来看这个目录,会发现有两个 server id,因为你的新服务器并不是别原来的这个 id,忽略了这个目录,也就迁移失败了。
PalSaved/ ├── Config ├── ImGui ├── SaveGames │ └── 0│ └── 6450F8E4748******00C070DC1CFD │ ├── LevelMeta.sav │ ├── Level.sav │ └── Players │ ├── 29005C6D000000000000000000000000.sav │ └── C5B26081000000000000000000000000.sav
除此之外,如果直接用老服务器上的 Saved 目录覆盖新服务器的 Saved 目录,又会出现服务器启动成功后过几秒又会失败的问题。
解决办法
最好的办法,是将整个 PalServer/Pal/Saved 替换掉。