本文主要是介绍xsync 集群远程同步脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
xsync 集群分发 脚本
(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
(a)rsync 命令原始拷贝:
rsync -av /opt/module root@hadoop103:/opt/
(b)期望脚本:
xsync 要同步的文件名称
(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
[libai@hadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/libai/.local/bin:/home/libai/bin:/opt/module/jdk1.8.0_212/bin
(3)脚本实现
(a)在/home/libai/bin 目录下创建 xsync 文件
[libai@hadoop102 opt]$ cd /home/libai
[libai@hadoop102 ~]$ mkdir bin
[libai@hadoop102 ~]$ cd bin
[libai@hadoop102 bin]$ vim xsync
在该文件中编写如下代码
#!/bin/bash#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho ==================== $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:$pdirelseecho $file does not exists!fidone
done
(b)修改脚本 xsync 具有执行权限
[libai@hadoop102 bin]$ chmod +x xsync
(c)测试脚本
[libai@hadoop102 ~]$ xsync /home/libai/bin
(d)将脚本复制到/bin 中,以便全局调用
[libai@hadoop102 bin]$ sudo cp xsync /bin/
(e)同步环境变量配置(root 所有者)
[libai@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh
注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。
让环境变量生效
[libai@hadoop103 bin]$ source /etc/profile
[libai@hadoop104 opt]$ source /etc/profile
这篇关于xsync 集群远程同步脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!