可发送到指定节点的xsync脚本

    技术2022-07-15  43

    普通的xsync脚本只可以将文件发送到集群的所有节点,如果需要发送到指定节点,则需要手敲rsync命令。

    闲暇重写了一下xsync脚本,先指定需要发送到的节点名称,再指定需要发送的文件,即可实现发送文件到指定节点。

    #!/bin/bash # 没有参数,报没有参数错误 if [ $# -lt 1 ] then echo Not Enough Argument! exit; fi # 第一个参数是文件,则发送到hadoop集群的所有节点 if [ -e $1 ] then for host in `cat /opt/module/hadoop-3.1.3/etc/hadoop/workers` do echo =========================== $host =========================== for file in $@ do if [ -e $file ] then pdir=$(cd -P $(dirname $file); pwd) fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir fi done done # 第一个参数不是文件,开始遍历参数确定需要发送几个节点 else for host in $@ do # 参数不是文件,即为要发送到的节点 if [ ! -e $host ] then echo =========================== $host =========================== # 遍历所有参数,是文件的就开始发送 for file in $@ do if [ -e $file ] then pdir=$(cd -P $(dirname $file); pwd) fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir fi done # 遍历到文件,说明已发送至所有指定节点 else echo 已发送至所有节点 exit; fi done fi

     

    Processed: 0.010, SQL: 9