マイクラサーバの全自動バックアップスクリプトです.
GitHub上にサーバをフォルダごと丸々コピーします.
このスクリプトは,木更津高専22s内で運営しているMinecraftサーバ用に作ったものを一般向けに改修したものです.
OS | Linux |
シェル | GNU/Bash |
Minecraft |
Java Edition ( screen を用いたバックグラウンド起動)
|
本スクリプトの設定および動作に必要なコマンド類です.
事前に下記コマンドが使用できることを確認してください.
git
rsync
screen
sleep
ssh
ssh-keygen
- シェルスクリプトを定期実行できるソフトウェア
(利用手順の説明ではcrontab
(cron)を用います.) - コードエディタ
(利用手順の説明ではVimを使います.
全人類Vim使うべき)
このスクリプトを利用する手順を示します.
-
Repository name に自由な名前を入れ,各種設定を確認したら Create repository from template を押します. (基本的に Include all branches にはチェックを入れないでください.)
-
SSH接続用の鍵を生成します.このとき,パスフレーズは設定しないでください.
$ cd ~/.ssh $ ssh-keygen -t ed25519 -C "[メールアドレス]"
-
リポジトリの設定ページにSSH公開鍵を登録します.
Title に鍵の名前を入力し,Key に公開鍵を貼り付けて Allow write access にチェックを入れて Add Key を押します. -
config
にSSH秘密鍵の設定を追記します.$ cd ~/.ssh $ vim ./config
Host github.com HostName github.com IdentityFile ~/.ssh/[秘密鍵名] User git
-
リポジトリをローカルにクローンします.
Code から SSH を選択し,リンクをコピーします.$ cd [クローン先の親ディレクトリ] $ git clone [コピーしたリンク]
-
リポジトリ内にある
backup.sh
を開き,スクリプトの設定を変更します.#!/bin/bash ##設定## STARTER="/root/minecraft-server/start.sh" #サーバの起動スクリプトのパス SCREEN="minecraft" #minecraftを実行しているscreen名 MC_DIR="/root/minecraft-server" #バックアップしたいディレクトリのパス BU_DIR="/root/MCServer-AutoBackup" #このスクリプトがあるディレクトリのパス BU_TIME=$(date +%Y%m%d-%H%M%S) #コミットメッセージに入れる日時のフォーマット BU_NAME="AutoBackup_${BU_TIME}" #コミットメッセージの名称 CNT1=300 #サーバを自動停止する300秒前にお知らせ CNT2=30 #サーバが自動停止する30秒前にもう一度お知らせ CNT3=120 #サーバが完全に停止するまで120秒待機 ########
- 誤作動を防ぐため,ディレクトリの指定には絶対パスを用いてください.
MC_DIR
のパスの最後に/
をつけると,data
ディレクトリ以下に指定したディレクトリの中身だけがコピーされます.
つけない場合は,MC_DIR
に指定したディレクトリごとdata
以下にコピーされます.CNT3
に設定した値は,サーバにstop
コマンドを送ってからファイルのコピーを開始するまでの待機時間です.
-
スクリプトに実行権限を付与します.
$ chmod 755 ./backup.sh
-
スクリプトを単体で実行して,正常に動作することを確認します.
$ ./backup.sh
-
ログの出力先ファイルを作成します.
$ cd /var/log $ sudo touch mcbackup.log $ sudo chmod 666 ./mcbackup.log
-
crontab
を用いて定期実行のスケジュールを設定します.詳細はググってください
例: 毎日03:10にバックアップを実行する$ crontab -e
10 03 * * * cd [BU_DIRに設定したパス] && ./backup.sh > /var/log/mcbackup.log 2>&1
This project is licensed under the MIT License, see the LICENSE file for details.