zoukankan      html  css  js  c++  java
  • linux定时压缩日志文件脚本

    1. 遍历指定目录下全部文件夹下的logs目录,将2天前的日志按日志名称单独压缩 (5个文件5个压缩包,压缩率低。)
    #!/bin/sh
    baseFolder="/opt/test";
    #查找days-1 天前的日志
    days=3;
    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

    2. 遍历指定目录下全部文件夹下的logs目录,将2天前的日志全部压缩到一个压缩文件(多个日志文件压缩到一个文件,提升压缩率)
    #!/bin/sh
    #日志查找路径
    baseFolder="/opt/test";
    LOG_TIME=`date "+%Y%m%d%H%M%S"`;
    #查找days-1 天前的日志
    days=3;
    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

    3.加入crontab定时任务管理

    crontab -e
    0 16 28 * * /bin/sh /opt/test/backlog.sh >/dev/null 2>&1

    每月28日下午四点执行脚本。

  • 相关阅读:
    《区块链100问》第33集:在交易平台投资区块链资产
    Python学习(三)数组属性方法总结
    Python学习(二)Numpy学习
    数学之美 第2章 自然语言处理:从规则到统计
    数学之美 第1章 文字和语言 vs 数字和信息
    Python学习(一)基础知识
    Python使用技巧(不定期更新)
    玩转Git三剑客——04. 创建第一个仓库并配置local用户信息、05. 通过几次commit来认识工作区和暂存区
    玩转Git三剑客——02. 安装Git、03. 使用Git之前需要做的最小配置
    玩转Git三剑客——01. 课程综述
  • 原文地址:https://www.cnblogs.com/joker666/p/12061140.html
Copyright © 2011-2022 走看看