ログファイルの名前を変更して圧縮する
スクリプト名: logrevolver.sh
書式: logrevolver.sh [ -d 削除文字列 ] ファイル名...
目的: ログをローテートする
戻り値: すべて成功:0 一部またはすべて失敗:1 エラー:9
#!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh || exit 9 Arg_Nums -ge 1 "$@" || exit 9 if [ "$1" = -d ]; then _DEL=$2 shift 2 fi #指定ファイルをそれぞれ処理する for _LOG in "$@"; do #ディレクトリの許可属性とファイルの確認 Chk_File -drwx "$(dirname "$_LOG")" ||\ { Error_Msg "$0" "$(dirname "$_LOG"): Permission denied.";\ _RETURN=1; continue; } [ -f "$_LOG" ] ||\ { Error_Msg "$0" "$_LOG: File did not exist." _RETURN=1 continue; } #最終更新日から日付フォーマットを生成 _DATE=$(date -r "$_LOG" +%Y%m%d) #新ファイル名の生成 _LOG_NEW=$(echo "$_LOG" | sed "s/$_DEL$/-$_DATE/") #新ファイル名を持つ既存ファイルの確認 [ -f "$_LOG_NEW" -o -f "$_LOG_NEW.gz" ] &&\ { Error_Msg "$0" "$_LOG_NEW or $_LOG_NEW.gz already exists.";\ _RETURN=1; continue; } #新ファイル名への名前変更と圧縮 mv "$_LOG" "$_LOG_NEW" gzip "$_LOG_NEW" done exit $_RETURN