tomcat日志文件定時清理備份


以下腳本主要備份的日志文件為tomcat的catalina.out、localhost_access_log.yyyy-mm-dd.log日志和項目的日志文件,其中項目的日志文件格式為"projectname-yyyy-mm-dd.log",以下為備份腳本,具體的操作都有相應的注釋,供大家參考,具體情況請根據日志文件的格式和要求來使用本腳本。

 

#!/bin/sh

######################################################################
# 日志定時運行時間為每天0點1分
# 刪除20天之前的日志文件,壓縮一周之前的日志文件
# 日志文件時間是根據日志名稱后面的日期來計算
# 運行腳本注意日志文件中是否有其他相同后綴的非日志文件和日志文件名稱是否符合要求
######################################################################

#日志文件所在目錄
path=/home/tomcat/apache-tomcat-project/logs

#進入日志目錄
cd $path

#catalina.out日志文件備份
#獲取前一天的日期
bak_date=`date +%Y-%m-%d -d "1 days ago"`
#備份catalina.out日志,后面添加日期
cp catalina.out catalina.out.$bak_date.log
#清空catalina.out日志文件
echo > catalina.out


#20天之前的日志文件刪除
#獲取20天之前的日期
del_date=`date +%Y-%m-%d -d "20 days ago"`
#獲取文件名中的日期字符串,然后對比時間進行相應的操作,localhost_access_log的后綴文件名一般是txt,這里包括txt文件
for n in `ls *.log *.txt -1`;do
    m=`echo $n | awk -F. '{print $(NF-1)}'`
    m=`echo ${m:0-10}`
    if [ ! $m ]; then
        echo "IS NULL"
        continue
    fi
    if [[ $m < $del_date || $m = $del_date ]];then
        echo file $n will be deleted.
        rm -rf $n
    fi
done

#一周之前的文件壓縮
#獲取一周之前的日期
zip_date=`date +%Y-%m-%d -d "7 days ago"`
#獲取文件名中的日期字符串,然后對比時間進行相應的操作
for n in `ls *.log *.txt -1`;do
    m=`echo $n | awk -F. '{print $(NF-1)}'`
    m=`echo ${m:0-10}`
    echo $n $m
    if [ ! $m ]; then
        echo "IS NULL"
        continue
    fi
    if [[ $m < $zip_date || $m = $zip_date ]];then
        echo file $n will be zip.
        zip $n.zip $n
        rm -rf $n
    fi
done

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM