日志压缩

#!/bin/bashbash

#define:清除cm日志
############## $1 表明/data/log/cm 保留的天数 ##############
############## $2 表明/data/log/cm/backup 保留的天数  ##############服务器

Basics_dir="/data/log/cm"
scripts_dir="/data/scripts"
#local_ip=`ifconfig |grep inet |grep broadcast|awk '{print $2}'`日志

####rsync传输须要用到的值
rsync_user=username
rsync_server=IP
rsync_passwd=`echo "$3"`
rsync_module=data2
###计数器峰值
timer_peak=5server


umcompres_num=`echo "$1"`
transferr_num=`echo "$2"`
parameter_sum=`echo "$#"`
#find ./ -mtime +10 |grep catalina.out|xargs rm -fip

logdir=$Basics_dir          #日志路径
log=$logdir/log.log            #日志文件 
is_font=1                #终端是否打印日志: 1打印 0不打印 
is_log=1                 #是否记录日志: 1记录 0不记录同步


####判断传入的位移参数的数量
judge_parameter() {
    if [[ "$parameter_sum" -ne 3 ]];then
        echo "Usage:[number/保留天数],[number/本地压缩保留天数],[rsync_server/密码]"
        exit 1
    else
        echo "$rsync_passwd" > $scripts_dir/rsync_passwd
        chmod 600 $scripts_dir/rsync_passwd
        passwd="$scripts_dir/rsync_passwd"    
    fi
}it

datef(){
    date "+%Y-%m-%d %H:%M:%S"
}ast

print_log(){
    if [[ $is_log -eq 1  ]];then
        [[ -d $logdir ]] || mkdir -p $logdir
        echo -e "[ $(datef) ] $1" >> $log
    fi
    if [[ $is_font -eq 1  ]];then
        echo -e "[ $(datef) ] $1"
    fi
}awk


cd $Basics_dir
log_compres(){
    read_compress_file=`find ./ -mtime +$umcompres_num |grep catalina.out|grep -v % |cut -d"/" -f2`
    for file in $read_compress_file
    do
               print_log "日志开始压缩"
            DATE=`echo "$file"|cut -d"." -f3`
            back_dir="backup/$DATE"
            [[ -d $back_dir ]]|| mkdir -p $back_dir
            [[ -f catalina.out."$DATE".tar.gz ]]&& mv $file $back_dir||tar -zcf $back_dir/cm"$DATE".tar.gz $file
            if [[ $? -eq 0 ]];then
                    print_log "$file 压缩or传输成功"
            rm -f $file
               else
                    print_log "$file 压缩or传输失败"
               fimodule

            #rm -f $file
               print_log "日志压缩完毕"

    done
}

log_com_dir="$Basics_dir/backup"
log_dump() {
    cd $log_com_dir
    log_back_list=`ls -l | awk '{print $9}' |grep -v ^$`
    for transferr_log_dir in $log_back_list
    do
        ####日期转换为时间戳
        date1=`date -d "$transferr_log_dir" +%s`
        ####当天时间戳转换
        date2=`date +%s`
        ####求差
        diff=$((`expr $date2 - $date1`/3600/24))
        if [[ $diff -gt $transferr_num ]];then
            #####时间大于指定的天数,须要传输至日志存储机器
            print_log "$transferr_log_dir 时间大于指定的天数,须要传输至日志存储机器,开始传输"
            #scp -i 秘钥  $transferr_log_dir/catalina.out."$transferr_log_dir".tar.gz username@ip:dir
            ####利用rsync客户端同步到服务器,这里能够用到多模块同步,多个客户端同时同步到服务
            timer=0
            while true
            do
                cd $Basics_dir/backup
                rsync -avzr --password-file=$passwd $transferr_log_dir $rsync_user@$rsync_server::$rsync_module
                if [[ $? -eq 0 ]];then
                    print_log "$transferr_log_dir 传输成功"
                    rm -rf $transferr_log_dir
                    timer=0
                    break
                elif [[ $timer -gt $timer_peak ]];then
                    print_log "$transferr_log_dir ,传输5次均失败"
                    break
                else
                    print_log "$transferr_log_dir ,传输失败"    
                    ####设置计数器自加
                    timer=$(($timer+1))
                fi
            done
            #rm -rf $transferr_log_dir
        else
            print_log "$transferr_log_dir 此目录还没达到指定天数,暂时不转移"
        fi

    done


}

judge_parameter log_compres log_dump

相关文章
相关标签/搜索