B3S
menu close

サーバー関連

特定のディレクトリ以下にあるログファイル(*.log)を日別に一括でバックアップ(圧縮保存)する


ヤス

更新日:2021/08/10


ログファイルが増えると管理が大変です。

【動作検証環境】OS:ubuntu server

複数あるログファイルを一括でバックアップ(圧縮保存)したい

サイト別に保存しているログファイル(*.log)を日別に一括で圧縮保存しかったのでシェルスクリプトを作成しました。

#!/bin/sh

#--config--
NOW_DATE=`date +'%Y%m%d'`
FIND_DIR = 保存場所
COMPRESS_DIR = 圧縮保存場所

#保存場所以下にあるログファイルを、圧縮保存場所に一括コピー
find ${FIND_DIR} -type d -name "${COMPRESS_DIR}" | xargs -i bash -c "cp -p {}/../*.log {}"
#圧縮保存場所以下にあるログファイルを、日別の名前を追加してリネーム
rename "s/\.log/_${NOW_DATE}\.log/" ${FIND_DIR}${COMPRESS_DIR}*.log
rename "s/\.log/_${NOW_DATE}\.log/" ${FIND_DIR}*/${COMPRESS_DIR}*.log
#圧縮保存場所以下にあるリネーム済ログファイルを、gzipで圧縮
find ${FIND_DIR} -type f -name "*_${NOW_DATE}.log" -exec gzip {} \;
#元々のログファイルの中身を空にする
find ${FIND_DIR} -name "*.log" | xargs -i cp /dev/null {}