美文网首页
本地获取多台远程linux服务器日志进行备份

本地获取多台远程linux服务器日志进行备份

作者: 小和尚88 | 来源:发表于2018-03-27 09:50 被阅读0次

    需求:

    后端应用服务部署在十几台阿里云linux服务器, 需要定时把这些应用的日志备份都某一台服务器进行保存备份(最近180天)


    #!/bin/bash

    ip_arry=("192.168.1.1" "192.168.1.2")

    remote_dir="/opt/logs/"

    bakDir=""

    for ip in ${ip_arry[@]}

    do

        echo $ip

        folderList=`sudo sshpass -p passwd ssh -o StrictHostKeychecking=no $ip find $remote_dir -type d -ctime -180`

        #echo $folderList

        fileList=`sudo sshpass -p passwd ssh -o StrictHostKeychecking=no $ip find $remote_dir -type f -ctime -180`

        echo $fileList

        for folder in $folderList;do #循环判断folder是否存在 不存在就创建

            if [ ! -d $folder ];then

                      mkdir -p $folder

            fi;

    done;

        for file in $fileList;do #循环判断文件是否存在 不存在就从机器上考过来

              if [ ! -f $file ];then

    sudo sshpass -p kgcx@123 scp -o StrictHostKeychecking=no root@$ip:$file ${file}"_"${ip}".log.gz"

              fi;

    done;

    done


    踩过的坑:

    1. 第一次远程连接会有交互式操作,采取-o StrictHostKeychecking=no参数跳过

    2. 安装sshpass使用sudo sshpass -p passwd避免交互式输入密码

    3. 因为后端应用采用分布式部署, 故在文件名上加上ip命名,否则会漏掉部分日志.

    相关文章

      网友评论

          本文标题:本地获取多台远程linux服务器日志进行备份

          本文链接:https://www.haomeiwen.com/subject/zkdjcftx.html