LINUX使用shell定时压缩tomcat日志文件

Linux服务器上每天会产生大量的日志文件,占用大量的磁盘空间;因此就有了压缩日志文件的需要
,使用shell脚本来完成定时压缩日志文件。

shell脚本

日志目录
/var/log/tomcat/
需要对该目录下的多个日志文件(文件名格式:xxxx.log.yyyy-mm-dd)进行压缩
处理的思路:

  1. 每个月的一种日志,以月份为单位压缩在同一个文件中,格式如:xxxx.log.2018-04.zip;
  2. 每天将前一天日志追加到当月的压缩文件中,如果当月压缩日志文件不存在,则创建;
  3. 加入系统计划任务,定时执行;
    实现:
#!/bin/bash
#日期:年月
zipDate=`date -d yesterday +%Y-%m`
#日期:日
zipFileDay=`date -d yesterday +%d`
#日志目录
basePath=/var/log/tomcat8/

cd "$basePath"
#文件前缀
logkey='aa.log'
#循环每种类型的日志
for logkey in  aa.log bb.log cc.log dd.log
do
  echo $logkey
  #是否存在月压缩文件包,不存在就创建一个,并把当前匹配日期的文件压缩;
if [ ! -f "${logkey}.${zipDate}.zip" ];
then
  echo "${logkey}.${zipDate}.zip does not exist.";
  zip ${logkey}.${zipDate}.zip ${logkey}.${zipDate}-*;
  rm  ${logkey}.${zipDate}-*;
else
   #存在,判断前一天的日志是否存在,存在就将该日志追加到月压缩包中
   echo "${logkey}.${zipDate}.zip is exist.";
   if [ -f "${logkey}.${zipDate}-${zipFileDay}" ]; then
     echo "${logkey}.${zipDate}-${zipFileDay} is exist.";
     zip -m ${logkey}.${zipDate}.zip ${logkey}.${zipDate}-${zipFileDay};
  #   rm ${logkey}.${zipDate}-${zipFileDay};
   fi
fi
done

文件名backup.sh,完整路径 /var/www/shell/backup.sh

加入到crontab定时器

crontab默认编辑器为nano,使用不太方便;下面使用vim打开
打开文件

root@iZ253dgk9xaZ:/# export EDITOR="/usr/bin/vim"; crontab -e

加入执行任务 (凌晨12点30分执行)

30 0 * * * /var/www/shell/backup.sh

保存并退出,查看内容

root@iZ253dgk9xaZ:/# crontab -e

OK,结束