shell 日誌備份

#!/bin/sh

#給文件加上時間戳後綴
#參數$1 文件名
function filenameConvert(){
    timestamp=$(date +%Y%m%d%H%M%S)
    #timestamp=`echo $timestamp`
    RETVAL=$1.$timestamp
}

#查找對應文件夾下的最老文件
#參數$1 目錄
function searchdir(){
    oldestlog=`ls -rt $1 |head -n 1|awk '{print $1}'`
}

#當日志備份目錄達到一定大小時,刪除最老的文件
clear_old_log(){
    #cd $logBackupDir
    while true;
    do
        logsize=`du -ms $logBackupDir |awk '{print $1}'`
        if [ $logsize -gt $logBackupMaxSize ];
        then
            searchdir $logBackupDir
            rm -rf $logBackupDir/$oldestlog
            #echo $logBackupDir/$oldestlog
            #echo $oldestlog
            #break;
        else
            break;
        fi
    done

}

backup_log_process(){
  cd $logSaveDir
    for i in *; do
        file_size=`du -m $i |awk '{print $1}'`
        case $i in
            b.log | aabb.txt | aa.rar |\
            a.log)

            if [ ! -d $logBackupDir ]; then
                mkdir -p $logBackupDir
            fi
            
            if [ $file_size -gt $logFileMaxSize ]; then
                filenameConvert $i
                cp $logSaveDir/$i $logBackupDir/$RETVAL
                echo "">$logSaveDir/$i
                clear_old_log
            fi
            ;;
        *)

            #不重要的文件,大於指定大小的也清空,不備份
            if [ $file_size -gt $logFileMaxSize ]; then
                if [ ! -d $logSaveDir/$i ]; then
                    echo "">$logSaveDir/$i
                    echo $i
                fi
            fi
        esac
    done
        
}

#備份目錄
logBackupDir=/tmp/hmbackup
#備份目錄大小上限M
logBackupMaxSize=20
#日誌存放目錄
logSaveDir=/tmp
#日誌多大可備份,單位M
logFileMaxSize=5

發佈了25 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章