2011年3月31日木曜日

シェルスクリプトサンプル:ファイルローテート


#!/bin/sh
# ファイルサイズを判定してローテートするサンプル

# << SCRIPT SUB SECTION >>

##### ファイルサイズを判定してローテート
# $1:対象ファイル
# $2:ローテート条件
rotate() {

file_size=`ls -lk --time-style='+%Y%m%d' $1 | awk '{print $5}'`
file_time=`ls -lk --time-style='+%Y%m%d' $1 | awk '{print $6}'`

# ファイルサイズがローテート条件を超えたら
if [ ${file_size} -gt $2 ]; then
tar -zcf $1.${file_time}.tar.gz $1
# 0バイト化
:> $1
fi
}


# << SCRIPT MAIN SECTION >>

TRAGET_DIR=/home/operation # ローテート対象ディレクトリ
TRAGET_FILE=rsync.log # ローテート対象ファイル
THRESHOLD=20 # KBで指定

BASE=`pwd`
cd ${TRAGET_DIR}

rotate ${TRAGET_FILE} ${THRESHOLD}

ls -l ${TRAGET_FILE}*
cd ${BASE}

exit 0

0 件のコメント:

コメントを投稿