見出し画像

PalWorld 自動バックアップ その2


0.はじめに

前回の記事「PalWorld 自動バックアップ」のバックアップスクリプトを
改善してみました。

前回はサービスを停止しない毎時バックアップを作りましたが、
すこし修正を加えた他、サービスを停止する毎日バックアップを追加しました。

スクリプトの作り方やアップロード時の注意点などは、前回の記事を参照してください。

1.参考にさせていただいたサイト様

2.完成形イメージ

ディレクトリ・ファイル構成は下図のようになります。

バックアップ ディレクトリ・ファイル構成

3.毎時バックアップ

毎時30分にサービスを停止しないで取得するバックアップです。

3.1.保存先

/home/steam/Palworld_Backup/Hourly/[YYYYMMDD]/[YYMMDD]_[HHMMSS].tar.gz

3.2.スクリプト

/home/steam/Palworld_Backup/backup-palworld.sh

#!/bin/bash

echo "Start Backup"

# Definition
BACKUP_DIR="/home/steam/Palworld_Backup/Hourly"
SOURCE_DIR="/home/steam/Palworld/Pal/Saved"
DATE_YMD=$(date +%Y%m%d)
DATE_HMS=$(date +%H%M%S)
SAVE_FILE="${DATE_YMD}_${DATE_HMS}.tar.gz"

# Create Hourly Dir
if [ ! -d $BACKUP_DIR ]; then
        echo "CreateDir:${BACKUP_DIR}"
        mkdir $BACKUP_DIR
fi

#Create YMD Dir
BACKUP_DIR="${BACKUP_DIR}/${DATE_YMD}"

if [ ! -d $BACKUP_DIR ]; then
        echo "CreateDir:${BACKUP_DIR}"
        mkdir $BACKUP_DIR
fi

# Create a gzip compressed tarball
tar -czf "${BACKUP_DIR}/${SAVE_FILE}" -C "${SOURCE_DIR}" .

echo "[Completed] Backup from ${SOURCE_DIR} to ${BACKUP_DIR}/${SAVE_FILE}"

3.3.Cron

30 * * * * /home/steam/Palworld_Backup/backup-palworld.sh

4.毎日バックアップ

毎日6時にサービスを停止してからバックアップを取得、その後サービスを再開します。

4.1.保存先

/home/steam/Palworld_Backup/Daily/[YYMMDD]_[HHMMSS].tar.gz

4.2.スクリプト

/home/steam/Palworld_Backup/reboot-palworld.sh

#!/bin/bash

# Definition
BACKUP_DIR="/home/steam/Palworld_Backup/Daily"
SOURCE_DIR="/home/steam/Palworld/Pal/Saved"
SAVE_FILE="$(date +%Y%m%d_%H%M%S).tar.gz"

# Stop Server
echo "Stop Server"
stop_command="systemctl stop palworld-server"
eval $stop_command
if [ $? -ne 0 ]; then
        echo "Failed to stop palworld server!"
        exit 1
fi

echo "Start Backup"

# Create Daily Dir
if [ ! -d $BACKUP_DIR ]; then
        echo "CreateDir:${BACKUP_DIR}"
        mkdir $BACKUP_DIR
fi

# Create a gzip compressed tarball
tar -czf "${BACKUP_DIR}/${SAVE_FILE}" -C "${SOURCE_DIR}" .

echo "[Completed] Backup from ${SOURCE_DIR} to ${BACKUP_DIR}/${SAVE_FILE}"

# Start Server
echo "Start Server"
start_command="systemctl start palworld-server"
eval $start_command
if [ $? -ne 0 ]; then
        echo "Failed to start palworld server!"
        exit_status=1
fi

4.3.Cron

0 6 * * * /home/steam/Palworld_Backup/reboot-palworld.sh

5.おわりに

そのうち、サービス停止前にRCONを用いてsaveをかける処理を追加しようと考えています。

この記事が気に入ったらサポートをしてみませんか?