#!/bin/bash
set -o nounset
declare -A dic
#This script is used for backup logs to oss!
#Time 2017/11/12
#Author guoyunlong gongxiaopo
###############Warning#################################
# 脚本放到需迁移日志服务器的路径为:/root/yunwei/ #
# 要先配置此机器root到日志服务器的xitong用户免密 #
# 只需修改:[备份日志所在路径]="保留天数" #
# 备份日志:/app/logs/yunwei/qianyi.log #
# 脚本可在每天5点之前或者14点以后执行 #
#######################################################
dic=(
[/app/lcagreemer8080/logs]="7"
[/app/lcagree9901/logs]="30"
)
#注意路径最后不要带'/'
##########################################################################################################################
IP_NEI=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 |grep IPADDR|cut -d = -f2`
if [ -f /etc/sysconfig/network-scripts/ifcfg-eth1 ]
then
IP_WAI=`cat /etc/sysconfig/network-scripts/ifcfg-eth1 |grep IPADDR|cut -d = -f2`
else
IP_WAI=no-wai-ip
fi
PATH_OSS=/databackup/log/${IP_NEI}_${IP_WAI} #得到OSS路径
if [ ! -d /app/logs/yunwei ];then mkdir -pv /app/logs/yunwei;fi
for i in ${!dic[*]};do
echo "`date +"%Y-%m-%d %H:%M:%S"` ${i}开始备份!" >> /app/logs/yunwei/qianyi.log
find $i/ -mtime +${dic[$i]} ! -name "*.gz" ! -name "*.sh" -type f |grep -v ".ssh"| xargs -i gzip {}
find $i/ -mtime +${dic[$i]} -name "*.gz" -type f | xargs -i md5sum {} > /root/yunwei/loglist_src.txt
if [ ! -s /root/yunwei/loglist_src.txt ];then
echo "`date +"%Y-%m-%d %H:%M:%S"` ${i}无需要备份的文件!" >> /app/logs/yunwei/qianyi.log
continue;fi
dir=$(awk -F/ '{for(x=2;x<NF;++x) printf "/"$x;printf "
"}' /root/yunwei/loglist_src.txt|sort|uniq -c|awk '{print $2}')
for dir_name in ${dir};do
ssh -n -o StrictHostKeyChecking=no xitong@10.25.90.142 "mkdir -p ${PATH_OSS}${dir_name}"
done
for file_name in $(awk '{print $2}' /root/yunwei/loglist_src.txt);do
scp -rp ${file_name} xitong@10.25.90.142:${PATH_OSS}${file_name}
done
ssh -n xitong@10.25.90.142 "find ${PATH_OSS}${i}/ -type f | xargs -i md5sum {} > $PATH_OSS/loglist_dst.txt"
scp -rp xitong@10.25.90.142:$PATH_OSS/loglist_dst.txt /root/yunwei/
ssh -n xitong@10.25.90.142 "ps aux|grep '/bin/sh -x /databackup/tool/log_tool/upload_log_tool/upload_log.sh'|grep -v grep" > /root/yunwei/tmp
time=$(date +%H%M)
if [ ! -s /root/yunwei/tmp ] && [ $time -lt 0500 -o $time -gt 0900 ];then
while read line;do
md5=$(echo $line|awk '{print $1}')
log_file=$(echo $line|awk '{print $2}')
grep "$md5" /root/yunwei/loglist_dst.txt
if [ "$?" == "0" -a "$md5" != "d41d8cd98f00b204e9800998ecf8427e" ];then
echo "${log_file}:备份成功" >> /app/logs/yunwei/qianyi.log
rm -rf "$log_file"
elif [ "$md5" == "d41d8cd98f00b204e9800998ecf8427e" ];then
echo "${log_file}:为空文件。" >> /app/logs/yunwei/qianyi.log
rm -rf "$log_file"
else
echo "${log_file}:备份失败。" >> /app/logs/yunwei/qianyi.log
fi
done < /root/yunwei/loglist_src.txt
echo "`date +"%Y-%m-%d %H:%M:%S"` ${i}备份结束!" >> /app/logs/yunwei/qianyi.log
else
echo "${time} 日志服务器upload_log.sh脚本正在运行!" >> /app/logs/yunwei/qianyi.log
exit
fi
done