• 指定服务器文件同步


    此脚本用于同业务服务器新增节点,同步文件使用
    主要使用到的技巧为:
    Shell 脚本传递带有空格的参数(正常遇到空格自动断开)
    可以通过@命令来处理
    即将参数7换成echo${@:7},这样将自动识别到的第7个开始,全部获取到作为最后第7个参数
    以下为同步脚本:

    #!/bin/bash
    
    RSYNC_FILE(){
        if [ $# -ge 3  ];then
            SOURCE_USER="root"
            SOURCE_IP="$1"
            SOURCE_PASSWD="$2"
            SOURCE="$3"
            DESTINATION="$3"
            Option=`echo ${@:4}`
            mkdir -p $3
            /usr/bin/expect << EOF
    spawn rsync -azvcP -e "ssh -p 22" ${Option} ${SOURCE_USER}@${SOURCE_IP}:$SOURCE $DESTINATION
    set timeout -1
             expect {
                    -timeout 60
                    "yes/no"    {send "yes
    ";exp_continue}
                    "*password" {send "${SOURCE_PASSWD}
    "}
                   }
             expect eof
    EOF
            #rm -rf $0
        else
            echo Usage:
            echo sh $0 '"SOURCE_IP"' '"SOURCE_PASSWD"' '"/data/"' 
            echo sh $0 '"SOURCE_IP"' '"SOURCE_PASSWD"' '"/data/www/"' '"--exclude log/* --exclude logs/*"'
        fi
    }
    
    RSYNC_FILE $1 $2 $3 $4
    scp_file.sh

    根据需要修改脚本中root账号及ssh端口,也可加入rm -rf $0,执行完删除自身

    脚本使用方法,直接执行即可查看Usage

  • 相关阅读:
    Uboot命令使用
    git删除某次提交
    chrome随意改变主题
    C++11——处理日期和时间的chrono库
    C++11——多线程异步操作
    C++11——原子变量
    C++11——C++线程同步之条件变量
    C++11——C++线程同步之互斥锁
    C++11——call_once
    C++11——命名空间
  • 原文地址:https://www.cnblogs.com/Mrhuangrui/p/7007718.html
Copyright © 2020-2023  润新知