Linux打包logs脚本

#!/bin/bash
#date:20220415
echo `date '+%Y-%m-%d %H:%M:%S'`" 打包程序执行开始!";

echo "开始打包从7天前截止昨天的日志(如本周日打包上周日到上周六的日志)!";

#筛选打包日志文件的起始日期

sevenDaysAgoDate=`date -d "7 days ago" +%Y-%m-%d`

#筛选打包日志文件的截止日期(此处为获取当前日期)

currentDate=`date +%Y-%m-%d`

#起始日期时间戳(作为日期范围对比使用)

sevenTimeStamp=`date -d "$sevenDaysAgoDate" +%s`

#截至日期时间戳

currentTimeStamp=`date -d "$currentDate" +%s`

index=0

#日志读取路径

filePath="/usr/tomcat/logs"

#获取该路径下所有日志文件

fileList=`ls $filePath -1 -c`

#遍历所有日志文件

for fileName in $fileList

do

    #将日志文件名及后缀与正则表达式做对比返回yyyy-mm-dd格式的日期值(如2022-04-15)

    fileDate=$( expr "$fileName" : '.*\([0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\}\).*.*' )    

    #将日期转换为时间戳

    fileDateTimeStamp=`date -d "$fileDate" +%s`

    #当时间戳值不为空且大于等于起始日期小于当前日期,那么获取该日志文件

    if [ "$fileDateTimeStamp" != "" ] && [ $fileDateTimeStamp -ge $sevenTimeStamp ] && [ $fileDateTimeStamp -lt $currentTimeStamp ]

    then

        fileList[$index]="$filePath/$fileName"

    else

        fileList[$index]=""

    fi

    (( index ++ ))

done

#获取所有在日期范围内的日志文件, @代表所有

meetConFiles=${fileList[@]}

#符合条件的日志文件数大于0就打包压缩

if [ "${#meetConFiles}" -gt 0 ]

then

tar -zcvf $currentDate.tar.gz $meetConFiles

else

echo "Not found the meet condition's files!"

exit 0

fi

echo "$currentDate.tar.gz create completion, Now begin to delete old files."

#删除已被打包压缩的日志文件

rm -fr $meetConFiles

echo "done."

exit 0

脚本写好之后 用crontab 定时任务调用shell脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值