【Minecraft】サーバーログを自動で整理・圧縮する

マルチサーバーを長期にわたって運営していると、大量にたまるサーバーログ。

そのまま放置しておくと、問題が発生した時などに参照したいログを見つけづらいだけでなく、ディスク容量をどんどん消費していってしまいます。

そこで今回は、ログを整理して圧縮する作業を自動化する方法を紹介したいと思います。

スクリプト作成

さっそくスクリプトを作成しましょう。

スクリプトは、下記の作業を行ってくれるように作成します。

  1. 作業用ディレクトリ作成
  2. 先月分のログをまとめる
  3. まとめたログを圧縮
  4. 作業用ディレクトリ削除

スクリプトの配置場所は、/opt/minecraft/server/とし、ファイル名はlog_compress.shとしました。

log_compress.sh
#!/bin/bash
# ログ圧縮スクリプト
#
# 引数なし
# Minecraftサーバーのルートディレクトリ
ROOT_DIR=/opt/minecraft/server
# 先月の日付
LAST_MONTH=`date -d "$(date +'%Y-%m-01') 1 month ago" +'%Y-%m'`
# ログ格納用ディレクトリ作成
LOG_DIR="${ROOT_DIR}/logs/$LAST_MONTH"
if [ ! -d ${LOG_DIR} ]; then mkdir $LOG_DIR
fi
# ログの移動
find "${ROOT_DIR}/logs/" -type f -name "${LAST_MONTH}*" | xargs -I% mv % $LOG_DIR
# 圧縮
##gz形式
tar -zcvf "${LOG_DIR}.tar.gz" $LOG_DIR
##bz2形式
# tar -jcvf "${LOG_DIR}.tar.bz2" $LOG_DIR
##xz形式
# tar -Jcvf "${LOG_DIR}.tar.xz" $LOG_DIR
##7zip形式(インストール要)
# 7z a -mx=9 "${LOG_DIR}.7z" $LOG_DIR
# 格納ディレクトリ削除
rm -rf $LOG_DIR

スクリプトのROOT_DIRは、Minecraftサーバーがあるディレクトリに書き換えてください。

圧縮したログは、ログフォルダに生成されていきます。圧縮形式は好みで変更してください。

最後に実行権限を与えておきましょう。

コマンド
chmod +x log_compress.sh

cronに設定して自動化

最後にcronへ登録して自動化します。

コマンド
# 絶対に -r と打ち間違えないように!!
crontab -e

最後尾に下記を追記します。

crontab
# 毎月5日の4時に実行
0 4 5 * * /bin/bash /opt/minecraft/server/log_compress.sh

まとめ

サーバーログは大事な資料ですが、たまりすぎると邪魔になってくるので整理することが大切です。

今回作成したスクリプトに削除処理はないため、余力がある人は削除処理まで入れるといいでしょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください