mirror of
https://github.com/YuzuZensai/palworld-server-docker.git
synced 2026-01-31 14:57:59 +00:00
Merge pull request #114 from Ericwww/support-migration
Support migrate from an existing server
This commit is contained in:
47
migration/README.md
Normal file
47
migration/README.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Migrate From Existing Server
|
||||||
|
|
||||||
|
## Using the script
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Use this script at your own risk, I am not responsible for dataloss!
|
||||||
|
>
|
||||||
|
> Please make sure you always have a backup!
|
||||||
|
|
||||||
|
1. Find a directory which is named by game server name and contains all saved game data,
|
||||||
|
usually it will at `~/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0/`
|
||||||
|
2. Make sure `migration/migrate.sh`, saved game data directory and mounted volume
|
||||||
|
(e.g. `palworld/`) are in the same directory. Like this:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
ubuntu@VM-4-5-ubuntu:~/test-pal-migrate$ ll
|
||||||
|
total 24
|
||||||
|
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan 26 03:31 ./
|
||||||
|
drwxr-x--- 12 ubuntu ubuntu 4096 Jan 26 03:31 ../
|
||||||
|
drwxr-xr-x 2 ubuntu ubuntu 4096 Jan 26 03:30 74406BE1D7B54114AA5984CCF1236865/
|
||||||
|
-rw-r--r-- 1 ubuntu ubuntu 840 Jan 25 05:51 docker-compose.yml
|
||||||
|
-rw-rw-r-- 1 ubuntu ubuntu 848 Jan 26 03:31 migrate.sh
|
||||||
|
drwxrwxr-x 7 ubuntu ubuntu 4096 Jan 26 03:31 palworld/
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Run `migrate.sh` like this
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./migrate.sh {CONTAINER_NAME} {SERVER_NAME}
|
||||||
|
```
|
||||||
|
|
||||||
|
For example,
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./migrate.sh test-pal-migrate 74406BE1D7B54114AA5984CCF1236865
|
||||||
|
```
|
||||||
|
|
||||||
|
## Manually
|
||||||
|
|
||||||
|
1. Copy the save from your old dedicated server to your new dedicated server.
|
||||||
|
2. In the `PalServer\Pal\Saved\Config\LinuxServer\GameUserSettings.ini` file of the **new** server,
|
||||||
|
change the `DedicatedServerName` to match your save's folder name. For example,
|
||||||
|
if your save's folder name is `2E85FD38BAA792EB1D4C09386F3A3CDA`, the DedicatedServerName changes to
|
||||||
|
DedicatedServerName=`2E85FD38BAA792EB1D4C09386F3A3CDA`.
|
||||||
|
3. Delete the entire new server save at `PalServer\Pal\Saved\SaveGames\0\<your_save_here>`,
|
||||||
|
and replace it with the folder from the old server.
|
||||||
|
4. Restart the new server
|
||||||
29
migration/migrate.sh
Normal file
29
migration/migrate.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CONTAINER_NAME=$1
|
||||||
|
MIGRATION_SERVER_NAME=$2
|
||||||
|
|
||||||
|
if [ ! -d ./"${MIGRATION_SERVER_NAME}" ]; then
|
||||||
|
echo "can not find ${MIGRATION_SERVER_NAME} dir at current dir"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d ./palworld ]; then
|
||||||
|
echo "can not find palworld dir at current dir"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONTAINER_ID=$(docker ps --filter name="${CONTAINER_NAME}" --format '{{.ID}}')
|
||||||
|
|
||||||
|
echo "########## STOPPING CONTAINER ${CONTAINER_NAME} NOW ##########"
|
||||||
|
docker stop "${CONTAINER_ID}"
|
||||||
|
|
||||||
|
cp -r ./"${MIGRATION_SERVER_NAME}" ./palworld/Pal/Saved/SaveGames/0/"${MIGRATION_SERVER_NAME}"/
|
||||||
|
|
||||||
|
sed -i "s/DedicatedServerName=.*/DedicatedServerName=${MIGRATION_SERVER_NAME}/" ./palworld/Pal/Saved/Config/LinuxServer/GameUserSettings.ini
|
||||||
|
|
||||||
|
echo "########## STARTING CONTAINER ${CONTAINER_NAME} NOW ##########"
|
||||||
|
docker start "${CONTAINER_ID}"
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user