微服务日志备份和汇聚脚本

1.日志备份脚本

#!/bin/bash
# 日志归档处理

#group_code=`awk -F":" '{if($1 == "app"){print $3 }}' /etc/group`
#USER_LIST=`awk -F":" '{if($4 == '${group_code}'){print $1 }}' /etc/passwd`
USER_LIST=("user" "commons" "advertise" "company" "cronjobcloud" "eurekasv" "filemanage" "manage" "messageserve"  "order" "pay" "product" "recruit" "gateway" "infomanage" "marketing")

# 当前日期
nowStr=`date +%Y-%m-%d`
#近7天的日期数组
dayStrs=(`date +%Y-%m-%d` `date -d -1days '+%Y-%m-%d'` `date -d -2days '+%Y-%m-%d'` `date -d -3days '+%Y-%m-%d'` `date -d -4days '+%Y-%m-%d'` `date -d -5days '+%Y-%m-%d'` `date -d -6days '+%Y-%m-%d'`)

#获取本机IP
local_ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
local_ip=`echo "${local_ip}" | tr "\n" "_"`
local_ip=${local_ip%_*}
echo ${local_ip}

function del_old_log()
{
        Folder_A="/home/$1/app/log"


        for file_a in ${Folder_A}/*
        do  
                #获取文件名
                temp_file=${file_a} 
                isContent="true"
                if [[ $temp_file == *logback* ]];then
                        isContent=""
                fi
                for dayS in ${dayStrs[@]}
                  do
                           if [[ $temp_file == *$dayS* ]];then
                                         isContent="true"
                           fi
                  done
                if [ "$isContent" == "" ]
                  then
                          rm -f $temp_file
                          #echo "删除文件:"$temp_file
                  else
                           echo "7天内的日志:"$temp_file
                  fi
        done
}

function tar_file()
{
        Folder_A="/home/$1/app/log"
        tar_file_name=""

        for file_a in ${Folder_A}/*
        do  
                #获取文件名
                temp_file=${file_a}
                temp_file=${temp_file##*/}
                isContent="true"
                if [[ $temp_file == *logback* ]];then
                        isContent=""
                fi
                for dayS in ${dayStrs[@]}
                  do
                           if [[ $temp_file == *$dayS* ]];then
                                         isContent="true"
                           fi
                  done
                if [ "$isContent" == "" ]
                  then
                      tar_file_name=$tar_file_name" "$temp_file
                  fi
        done

        echo $tar_file_name
}

for x in ${USER_LIST[@]}
  do
      cd /home/${x}/app/log/
      # 删除之前归档的压缩包
	  rm -rf ${x}_${local_ip}*.tar.gz
	  # 找到要归档的文件名
	  file_name=$(tar_file $x)
	  #压缩归档
	  if [ "$file_name" == "" ]; then
	      echo "没有需要归档的日志"
	  else
	      tar -zcf ${x}_${local_ip}_${nowStr}.tar.gz $file_name
	  fi
	  #删除归档后的文件
      del_old_log $x
  done

2.汇聚脚本(将不同节点上的日志汇聚到一块)

group_code=`awk -F":" '{if($1 == "app"){print $3 }}' /etc/group`
USER_LIST=`awk -F":" '{if($4 == '${group_code}'){print $1 }}' /etc/passwd`
nowStr=`date +%Y-%m-%d`
USER=root
PASSWORD=******
service_ip=("172.18.55.**","172.18.46.**","172.18.46.**")

#先删除原来的
cd /home/logbackups/
rm -rf *.tar.gz

for ip in ${service_ip[@]}
  do
      for x in ${USER_LIST}
        do
lftp -u ${USER},${PASSWORD} sftp://${ip} << EOM
cd /home/$x/app/log/
lcd /home/logbackups/
mget *.tar.gz
bye
EOM
        done
   done

for x in ${USER_LIST}
  do
lftp -u root,ymHc0601Ecs sftp://172.18.22.137 << EOM
cd /home/$x/app/log/
lcd /home/logbackups/
mget *.tar.gz
bye
EOM
  done
  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kenick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值