AI智能
改变未来

Shell:集群分发脚本

1、需求:循环复制文件到所有节点的相同目录下

2、需求分析:

[code](a)rsync命令原始拷贝:rsync -av /opt/module  root@hadoop13:/opt/(b)期望脚本:xsync + 要同步的文件名称(c)说明:在/home/Mark/bin这个目录下存放的脚本,Mark用户可以在系统任何地方直接执行。

3、脚本实现

(a)在/home/Mark目录下创建xsync文件

[code]cd /home/Markvim xsync

在该文件中编写如下代码

[code]#!/bin/bash#1. 判断参数个数if [ $# -lt 1 ]then  echo Not Enough Arguement!  exit;fi#2. 遍历集群所有机器for host in hadoop12 hadoop13 hadoop14do  echo ====================  $host  ====================  #3. 遍历所有目录,挨个发送  for file in $@  do    #4 判断文件是否存在    if [ -e $file ]    then      #5. 获取父目录      pdir=$(cd -P $(dirname $file); pwd)      #6. 获取当前文件的名称      fname=$(basename $file)      ssh $host \"mkdir -p $pdir\"      rsync -av $pdir/$fname $host:$pdir    else      echo $file does not exists!    fi  donedone

(b)修改脚本 xsync 具有执行权限

[code]chmod +x xsync

(c)将脚本移动到/bin中,以便全局调用

[code]sudo mv xsync /bin/

(d)测试脚本

[code]sudo xsync /bin/xsync

 

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Shell:集群分发脚本