概要
Azureのクラウドストレージを使って、パルサーバーのセーブデータをバックアップする。
- 見積り
- ストレージアカウントの作成
- コンテナーの作成
- 仮想マシンからストレージアカウントへの紐づけ
- AzureCLIの導入
- バックアップとアップロード
- 動作確認
- 定期実行化
見積り
- Azure Blob Storage の価格
https://azure.microsoft.com/ja-jp/pricing/details/storage/blobs/
Standardなコールドで1GB使って約0.5円。
現状のパルセーブデータが6~10MBなので、1万回バックアップしても数円レベル。
ストレージアカウントの作成
Azureのストレージアカウント画面へ遷移
↓
作成
■基本
■詳細設定
- 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
おわりに
ちょうどバックアップをしておいたおかげで、鯖内のプレイヤーデータが消えた時に正常だったデータまでロールバックすることができた。やったね。