マルチサーバーを長期にわたって運営していると、サーバーログが大量にたまってきてしまいます。
そのまま放置しておくと、問題が発生した時などに参照したいログを見つけづらいだけでなく、ディスク容量をどんどん消費していってしまいます。
そこで今回は、ログを整理して圧縮する作業を自動化していきたいと思います。
スクリプト作成
さっそくスクリプトを作成しましょう。
スクリプトの内容は、下記の通りです。
- 先月分のログをまとめる
- まとめたログを圧縮
- 作業用ディレクトリ削除
スクリプトの配置場所は、「/opt/minecraft/server/」とします。
また、スクリプトファイル名は「log_compress.sh」としました。
#!/bin/bash # ログ圧縮スクリプト # # 引数なし # サーバールートディレクトリ 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
圧縮したログは、ログフォルダに生成されていきます。
また、圧縮形式は好みで変更してください。
最後に実行権限を与えておきましょう。
chmod +x log_compress.sh
cronに設定して自動化
最後にcronへ登録して自動化します。
# 絶対に -r と打ち間違えないように!! crontab -e
最後尾に下記を追記します。
# 毎月5日の4時に実行 0 4 5 * * /bin/bash /opt/minecraft/server/log_compress.sh
まとめ
サーバーログは大事な資料ですが、たまりすぎると邪魔になってくるので整理することが大切です。
今回作成したスクリプトに削除処理はないため、余力がある人は削除処理まで入れるといいでしょう。
コメント