ほのぼの技術部

技術系記事

Palworldのセーブデータをバックアップする(Azure)

概要

Azureのクラウドストレージを使って、パルサーバーのセーブデータをバックアップする。

  • 見積り
  • ストレージアカウントの作成
  • コンテナーの作成
  • 仮想マシンからストレージアカウントへの紐づけ
  • AzureCLIの導入
  • バックアップとアップロード
  • 動作確認
  • 定期実行化

見積り

  • Azure Blob Storage の価格

https://azure.microsoft.com/ja-jp/pricing/details/storage/blobs/

Standardなコールドで1GB使って約0.5円。

現状のパルセーブデータが6~10MBなので、1万回バックアップしても数円レベル。

ストレージアカウントの作成

Azureのストレージアカウント画面へ遷移

作成

■基本

  • プロジェクトの詳細

  • インスタンスの詳細

    • ストレージアカウント名:任意
    • 地域:任意
    • パフォーマンス:Standard
    • 冗長性:LRS

■詳細設定

  • BLOBストレージ
    • アクセス層:クール

他そのまま

■ネットワーク

ネットワークアクセス:任意

■データ保護

今回は全てチェックを外す

■暗号化

  • 暗号化の種類:MMK
  • BLOBとファイルのみ

確認して作成

コンテナーの作成

作成したストレージアカウントを選択

「コンテナー」メニューより、新しいコンテナーを作成する。

仮想マシンからストレージアカウントへの紐づけ

仮想マシンからストレージアカウントへアクセスできるように、アクセス許可設定を行う。

ストレージアカウントの「アクセス制御(IAM)」メニューより、

「ロールの割り当ての追加」

  • ロール
    • 特権管理者ロール→「ストレージBLOBデータ共同作成者」 を選択
  • メンバー
    • アクセスの割当先:マネージドID
    • メンバー:<接続元の仮想マシンを選択>

「レビューと割り当て」

AzureCLIの導入

仮想マシンからアップロードコマンドを実行するために導入しておく。

https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli-linux?pivots=apt

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

バックアップとアップロード

バックアップはパルサーバーのセーブゲームのディレクトリを丸ごとtarボールで固めます。

スクリプトを作成します。

  • pal-backup-and-upload.sh
#!/bin/sh

WORK_PATH="/home/steam/work"
TARBALLNAME="`date +%Y%m%d`.PalSaveData.tar.gz"

az login -i

cd $WORK_PATH
## backup
tar -cvzf ${WORK_PATH}/${TARBALLNAME} -C /home/steam/.steam/SteamApps/common/PalServer/Pal/Saved/ SaveGames

## upload
az storage blob upload -f ${WORK_PATH}/${TARBALLNAME} -c <コンテナーの名前> --account-name <ストレージアカウントの名前> --auth-mode login

az logout

rm ${WORK_PATH}/${TARBALLNAME}

実行権限付与

chmod u+x pal-backup-and-upload.sh

動作確認

./pal-backup-and-upload.sh

Azureのコンテナーにアップロードされていれば成功。

定期実行化

定期実行の設定を行い、毎日バックアップ処理を行うようにする。

EDITOR=vi crontab -e
#3:30にバックアップ実行
30 3 * * * /home/steam/scripts/pal-backup-and-upload.sh

おわりに

ちょうどバックアップをしておいたおかげで、鯖内のプレイヤーデータが消えた時に正常だったデータまでロールバックすることができた。やったね。