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

需求:

后端应用服务部署在十几台阿里云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服务器日志进行备份)