Linux文件群发脚本

有时如果想要将一台节点上的内容发送到其它节点上,可以使用rsync命令。

!/bin/bash
##################################################################
##脚本功能:将文件分发到其它节点
##
##示例:xsync 文件名或文件目录
#################################################################

#STEP1: 获取参数。若没有参数,则返回错误信息,并退出。$#是获取所有参数的个数
if [ $# -lt 1 ];then
    echo '至少要传入1个参数!'
    exit;
fi

#STEP2: 遍历集群
for host in hadoop103 hadoop104
do
    echo ======================= $host ====================
    #STEP3: 遍历所有文件。$@是获取所有参数
    for file in $@
    do
        #STEP4: 文件是否存在
        if [ -e $file ];then
            #STEP5: 获取父目录
            #dirname是去除文件名中的非目录部分,传入的参数可以是一个绝对路径;
            pdir=$(cd -P $(dirname $file); pwd)
            #STEP6: 获取当前文件的名称
            fname=$(basename $file)
            #STEP7: SSH到目标节点,创建目录
            ssh $host "mkdir -p $pdir"
            #STEP8: 分发文件
            #a表示递归传输,v表示详细模式输出
            rsync -av $pdir/$fname $host:$pdir
        else
            echo '$file is not exists!'
        fi
    done
done

注意:

  1. 使用该脚本前最好配置SSH无秘登录,否则需要手动输入密码;
  2. 该脚本应该放置/bin目录下,并赋执行权限:chmod +x xsync,这样即使是root文件,也可以通过sudo 命令调用传输。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值