linux压缩日志脚本

新建文件:

vim  tar_log.sh

按【i】写入脚本内容,按【Esc】,输入:wq保存退出编辑模式

赋予执行权限:

chmod +x tar_log.sh

脚本内容如下:

第一种:遍历指定目录下全部文件夹下的logs目录,将7天前的日志按日志名称单独压缩

缺点:每个单独压缩,效率低

#!/bin/sh
baseFolder="/opt/test";
#查找days-1 天前的日志
days=8;
cd ${baseFolder};
for dir in $(ls $baseFolder)
do
     echo "文件列表:${dir}"
     if [ -d ${dir} ];then
          echo "遍历是否存在需要压缩日志文件......"
          if [ -d ${dir}/logs ];then
               echo `pwd` " 目标路径:${dir}/logs";
               for log in $(find ${dir}/logs -mtime +${days} -name "*.log")
               do
                    tar -zcvf ${log}.tar.gz ${log};
                    if [ $? -eq 0 ];then
                              echo "日志文件压缩成功!删除原日志文件......"
                              rm -f ${log};
                              if [ $? -eq 0 ];then
                                        echo "日志文件删除成功!"
                              else
                                        echo "日志文件删除失败!"
                              fi
                    else
                              echo "日志文件压缩失败!"
                    fi
               done
          fi
     else
          echo "没有日志文件需要压缩......"
     fi
done

 第二种:遍历指定目录下全部文件夹下的logs目录,将7天前的日志全部压缩到一个压缩文件

#!/bin/sh
#日志查找路径
baseFolder="/opt/test";
#当前时间按格式输出
LOG_TIME=`date "+%Y%m%d%H%M%S"`;
#查找days-1 天前的日志
days=8;
cd ${baseFolder};
for dir in $(ls $baseFolder)
do
     echo "文件列表:${dir}"
     if [ -d ${dir} ];then
          echo "遍历是否存在需要压缩日志文件......"
          if [ -d ${dir}/logs ];then
               echo `pwd` " 目标路径:${dir}/logs";
               n=`find ${dir}/logs -mtime +${days} -name "*.log" | wc -l`;
               echo "待处理日志文件数:${n}";
               if [ ${n} -gt 0 ];then
                    echo "压缩日志文件......";
                    tar -zcvf ${dir}/logs/${dir}${LOG_TIME}.tar.gz `find ${dir}/logs -mtime +${days} -name "*.log"`;
                    if [ $? -eq 0 ];then
                         echo "日志文件压缩成功!删除原日志文件......"
                         for log in $(find ${dir}/logs -mtime +${days} -name "*.log")
                         do
                              rm -f ${log};
                              if [ $? -eq 0 ];then
                                   echo "日志文件删除成功!"
                              else
                                    echo "日志文件删除失败!"
                              fi
                         done
                    else
                          echo "日志文件压缩失败!"
                    fi
               else
                    echo "无日志需要处理!"
               fi
          else
             echo "当前目录下无logs文件夹!"
          fi
     else
          echo "非文件目录......"
     fi
done

定时任务

crontab -e

不输出日志:
30 3 * * * /bin/sh /home/tar_log.sh >/dev/null 2>&1

crontab -e
# 每天凌晨3点30执行
30 3 * * * sh /home/tar_log.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值