进入Linux终端,键入vim timePackLogs.sh(脚本名称)创建脚本并编辑如下脚本代码:
#!/bin/bash#author:chen#date:20200821#department:xxxx#email:xxxx@xxxx.com#if you have any questions, please contact the email!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="/home/weblogic/logs1"#获取该路径下所有日志文件fileList=`ls $filePath -1 -c`#遍历所有日志文件for fileName in $fileListdo#将日志文件名及后缀与正则表达式做对比返回yyyy-mm-dd格式的日期值(如2018-09-10)fileDate=$( expr "$fileName" : '.*[0−9]{4}\-[0−9]{2}\-[0−9]{2}[0−9]{4}\-[0−9]{2}\-[0−9]{2}.*.*' )#将日期转换为时间戳fileDateTimeStamp=`date -d "$fileDate" +%s`#当时间戳值不为空且大于等于起始日期小于当前日期,那么获取该日志文件if [ "$fileDateTimeStamp" != "" ] && [ $fileDateTimeStamp -ge $sevenTimeStamp ] && [ $fileDateTimeStamp -lt $currentTimeStamp ]thenfileList[$index]="$filePath/$fileName"elsefileList[$index]=""fi(( index ++ ))done#获取所有在日期范围内的日志文件, @代表所有meetConFiles=${fileList[@]}#符合条件的日志文件数大于0就打包压缩if [ "${#meetConFiles}" -gt 0 ]thentar -zcvf $currentDate.tar.gz $meetConFileselseecho "Not found the meet condition's files!"exit 0fiecho "$currentDate.tar.gz create completion, Now begin to delete old files."#删除已被打包压缩的日志文件rm -fr $meetConFilesecho "done."exit 0
