#!/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