最近、MinecraftのBedrock Serverで遊んでおります。子供たちと。
万が一データをロストするとそれなりにショックが大きいのでバックアップはきちんとしておこう。
このサーバはOracle Cloud(OCI)で動いているので、OCI上のバックアップ機能を使うのが吉。
その方法は以下の記事に書いた。
OCIのバックアップ設定
とりあえずバックアップしとけば一安心!?
それに加えて、明示的に静止点を設けるために個別にバックアップを行うこととする。
Docker版Minecraftサーバのバックアップ機能もコンテナで公開されているので使わせてもらう。
そもそものMinecraftのサーバを立てる方法はこちら。
マインクラフト統合版サーバ(Bedrock Dedicated Server Ver.1.18.12)をOracle CloudとDockerで構築する
マイクラはやっぱ楽しい
ちなみにサーバのバージョンの上げ方はdockerを再起動するだけ。
"latest"タグを付けておけばOK。
今回はこのdocker-compose.ymlにバックアップ用コンテナを追記する。
version: '3.4'
services:
bds:
container_name: bds
restart: always
image: itzg/minecraft-bedrock-server:latest
environment:
SERVER_NAME: SERVER1
EULA: "TRUE"
GAMEMODE: survival
DIFFICULTY: normal
LEVEL_NAME: MY WORLD
TZ: Asia/Tokyo
ports:
- 19132:19132/udp
volumes:
- /docker/bds/data:/data #サーバディレクトリ
stdin_open: true
tty: true
### 追記ここから
backup:
container_name: bds_backup
image: kaiede/minecraft-bedrock-backup
restart: always
tty: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /docker/bds/backups:/backups #バックアップディレクトリ
- /docker/bds/data:/server #サーバディレクトリ
depends_on:
- "bds"
environment:
TZ: Asia/Tokyo
### 追記ここまで
ポイントはサーバのディレクトリを共有しておくこと。
上記だと「/docker/bds/data」がサーバのディレクトリ。
次にバックアップの設定ファイル(config.yml)をバックアップディレクトリに置く。
上記だと「/docker/bds/backups/config.yml」だ。
内容は以下。
containers:
bedrock:
- name: bds
worlds:
- "/server/worlds/MY WORLD"
schedule:
interval: 12h
trim:
trimDays: 2
keepDays: 14
minKeep: 2
設定はわざわざ書かなくても分かると思うけど、
"worlds"がマイクラの世界名。上記でいうところの「LEVEL_NAME」。
"interval"がバックアップ取得の間隔。
"trim"がバックアップする保存日数や世代数の設定。
上記だとたぶん12時間ごとにバックアップを取得し保存日数は14日間かな?
その後、コンテナを起動して、ログを確認するとバックアップが取得されていることがわかる。
$ docker logs bds_backup DEBU[0000] Using /backups to match uid and gid DEBU[0000] Resolved UID=0 from match path DEBU[0000] Resolved GID=0 from match path [18:59:33.332][info ] Initializing Bedrockifier Daemon [18:59:33.334][info ] Loading Configuration From: /backups/config.yml [18:59:33.340][info ] Configuration Loaded, Entering Event Loop... [18:59:33.343][info ] Host PTY Handle Opened: /dev/pts/1 (3) [18:59:33.354][info ] Child PTY Handle Opened: /dev/pts/1 (4) [18:59:33.355][info ] Checking for servers that might not be cleaned up [18:59:33.355][info ] Backup Interval: 43200.0 seconds [18:59:33.356][info ] Starting Full Backup [18:59:36.585][info ] Starting Backup of worlds for: bds [18:59:36.590][info ] Backing Up: MY WORLD [18:59:37.636][info ] Backed up as: MY WORLD.20220501-185936.mcworld [18:59:37.638][info ] Backups for bds finished successfully... [18:59:37.688][info ] Performing Trim Jobs [18:59:37.734][info ] Full Backup Completed
バックアップ成功。
バックアップディレクトリに".mcworld"というファイルができているはず。
リストア方法。
やったことないけど、以下のような流れだそうな。
- コンテナを止める
- サーバフォルダの"worlds"フォルダに移動
- "世界名"のフォルダを別名に変更
- 再度、"世界名"のフォルダを作成し、移動
- バックアップしたmcworldファイルをunzipする
- コンテナ起動
- 2.で別名保存したフォルダを削除
バックアップからデータを戻すことはあまりしたくないのだけど、
いざという時はバックアップしておいて損ではないので
設定できるのであれば設定しておくべき。
以下、参考。



0 件のコメント:
コメントを投稿