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