指定服务器文件同步

此脚本用于同业务服务器新增节点,同步文件使用
主要使用到的技巧为:
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\r";exp_continue}
                "*password" {send "${SOURCE_PASSWD}\r"}
               }
         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

 

posted @ 2017-06-14 10:58  Mr黄瑞  阅读(315)  评论(0编辑  收藏  举报