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日下午四點執行腳本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM