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

你可能感兴趣的:(服务器相关,linux,shell)