Linux-xsync分发脚本

Linux-xsync分发脚本xsync集群分发脚本(1)需求:循环复制文件到所有节点的相同目录下(2)需求分析:(a)rsync命令原始拷贝:rsync-av/opt/moduleatguigu@hadoop103:/opt/(b)期望脚本:xsync要同步的文件名称(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)[atguigu@hadoop102~]$echo$PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/ho

大家好,又见面了,我是你们的朋友全栈君。

xsync 集群分发脚本(首先已经设置免密登录
(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
(a)rsync 命令原始拷贝:

rsync -av /opt/module atguigu@hadoop103:/opt/

(b)期望脚本:
xsync 要同步的文件名称
(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

[atguigu@hadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin:/opt/module/jdk1.8.0_212/bin

(3)脚本实现
(a)在/home/atguigu/bin 目录下创建 xsync 文件

[atguigu@hadoop102 opt]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin
[atguigu@hadoop102 bin]$ vim xsync

在该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi
#2. 遍历集群所有机器
for host in cdh1 cdh2 cdh3
do
 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
 done
done

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

[atguigu@hadoop102 bin]$ chmod +x xsync

(c)测试脚本

[atguigu@hadoop102 ~]$ xsync /home/atguigu/bin

(d)将脚本复制到/bin 中,以便全局调用

[atguigu@hadoop102 bin]$ sudo cp xsync /bin/

(e)同步环境变量配置(root 所有者)

[atguigu@hadoop102 ~]$ sudo ./bin/xsync 
/etc/profile.d/my_env.sh

注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。
让环境变量生效

[atguigu@hadoop103 bin]$ source /etc/profile
[atguigu@hadoop104 opt]$ source /etc/profile

测试:

 xsync zookeeper-3.4.14

在这里插入图片描述
这样就将zookeeper的目录传到cdh1 cdh2 cdh3三个节点中

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146045.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月15日 下午10:40
下一篇 2022年5月15日 下午10:40


相关推荐

  • Declare 用法

    Declare 用法用途说明 declare 命令是 bash 的一个内建命令 它可以用来声明 shell 变量 设置变量的属性 Declarevaria orgivethemat 该命令也可以写作 typeset 虽然人们很少使用这个命令 如果知道了它的一些用法 就会发现这个命令还是挺有用的 nbsp nbsp 常用参数格式 declare 格式 typeset

    2026年3月17日
    2
  • java cloneable 接口_Cloneable 接口 记号接口(标记接口)「建议收藏」

    java cloneable 接口_Cloneable 接口 记号接口(标记接口)「建议收藏」Cloneable接口指示了一个类提供了一个安全的clone方法。首先了解Object.clone()方法:clone是Object超类的一个protected方法,用户代码不能直接调用这个方法。Object的子类只能调用Object超类中受保护的clone方法来克隆它自己的对象,必须重新定义clone为public才能允许所有方法调用这个类的实例的clone方法克隆对象。clone方法的作用:…

    2022年8月31日
    9
  • 即梦AI生成图片看不到?手把手教你解决这个问题!

    即梦AI生成图片看不到?手把手教你解决这个问题!

    2026年3月12日
    3
  • angular5面试题_大数据面试题

    angular5面试题_大数据面试题Angular更新还是非常快的,目前(2020)的速度是每年2个主版本。网上也有不少面试题,不过很多都是针对老的版本,尤其是AngularJS的。因为最近在看Angular的面试题,所以特意总结一下。下面内容都是基于Angularv8.0以上的。顺便科普一下,Angular最早期的版本,也叫AnugularJS,使用javascript开发;新的版本,才叫Angular,也称为Angular2,使用typescript开发,Angular和AngularJS是不兼容的(当然也有2个版本的集成方案)。

    2022年10月18日
    3
  • OpenClaw 小龙虾纯命令直装指南:Linux 和 Windows 双端原生环境部署与 QQ 机器人对接

    OpenClaw 小龙虾纯命令直装指南:Linux 和 Windows 双端原生环境部署与 QQ 机器人对接

    2026年3月13日
    2
  • CSS样式自动换行(强制换行)

    CSS样式自动换行(强制换行)自动换行问题 正常字符的换行是比较合理的 而连续的数字和英文字符常常将容器撑大 挺让人头疼 下面介绍的是 CSS 如何实现换行的方法对于 div p 等块级元素正常文字的换行 亚洲文字和非亚洲文字 元素拥有默认的 white space normal 当定义的宽度之后自动换行 html div nbsp id wrap 正常文字的换行 亚洲文字和非亚洲文字 元素拥有默认的 whit

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号