xsync 集群同步脚本

scp 和rsync均是远程拷贝,

rsync 远程分发

在这里插入图片描述

在这里插入图片描述

xsync 集群分发脚本

循环复制文件到所有节点相同的目录下

新建一个脚本

touch xsync.sh
vim xsync.sh
#!/bin/bash
# $#:表示传递给脚本或函数的参数个数。
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
 
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
 
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
 
#4 获取当前用户名称
user=`whoami`
 
#5 循环
#for((host=0; host<5; host++)); do
        #echo $pdir/$fname $user@192.168.3.15$host:$pdir
 #       echo --------------- 192.168.3.15$host ----------------
 #       rsync -rvl $pdir/$fname $user@192.168.3.15$host:$pdir
#done
 
#5 循环
for host in {master,slaver1,slaver2,slaver3,slaver4,slaver5}; do
        #echo $pdir/$fname $user@$host:$pdir
        echo --------------- $host ----------------
        rsync -rvl $pdir/$fname $user@$host:$pdir
done

赋予执行权限

chmod 777 xsync.sh

测试
同步一个文件夹

 cd /usr/local/
 xsync.sh hive

执行结果

[root@master local]# xsync.sh hive
fname=hive
pdir=/usr/local
--------------- master ----------------
sending incremental file list

sent 53 bytes  received 17 bytes  28.00 bytes/sec
total size is 0  speedup is 0.00
--------------- slaver1 ----------------
sending incremental file list

sent 49 bytes  received 17 bytes  44.00 bytes/sec
total size is 0  speedup is 0.00
--------------- slaver2 ----------------
sending incremental file list
hive/

sent 52 bytes  received 20 bytes  48.00 bytes/sec
total size is 0  speedup is 0.00
--------------- slaver3 ----------------
sending incremental file list
hive/

sent 52 bytes  received 20 bytes  48.00 bytes/sec
total size is 0  speedup is 0.00
--------------- slaver4 ----------------
sending incremental file list
hive/

sent 56 bytes  received 20 bytes  50.67 bytes/sec
total size is 0  speedup is 0.00
--------------- slaver5 ----------------
sending incremental file list
hive/

sent 52 bytes  received 20 bytes  48.00 bytes/sec
total size is 0  speedup is 0.00
[root@master local]# 

xsync 是一个用于在集群环境中实现文件同步和分发的脚本工具,通常用于大数据平台或分布式计算环境中,以确保多个节点之间的配置文件、脚本或数据保持一致。该脚本基于 rsync 工具开发,结合 ssh 实现对多台主机的批量文件同步和部署操作。 ### 功能 1. **批量文件同步** xsync 支持将本地文件或目录同步到多个远程主机上,适用于部署配置文件、脚本、软件包等。它通过循环遍历主机列表,依次执行 rsync 命令将文件传输到目标节点[^1]。 2. **基于 SSH 的无密码通信** xsync 依赖于 SSH 协议进行远程连接和文件传输,通常需要提前配置 SSH 免密登录,以避免在每次同步时输入密码,提高自动化效率[^1]。 3. **支持并行执行** 某些实现版本的 xsync 支持并行执行文件同步任务,通过多线程或并行处理机制提升传输效率,缩短大规模集群中的文件分发时间。 4. **保留文件属性** xsync 通常封装了 rsync 的 `-a`(归档模式)选项,确保文件权限、时间戳、符号链接等属性在同步过程中保持不变,适用于生产环境中的配置一致性维护[^1]。 5. **错误处理与日志记录** 高级版本的 xsync 脚本可能包含错误检测机制,例如判断目标主机是否可达、文件是否存在等,并记录同步过程中的输出信息,便于排查问题。 ### 用途 1. **集群配置同步** 在 Hadoop、Spark 等分布式系统中,xsync 常用于同步 `core-site.xml`、`hdfs-site.xml` 等配置文件到所有节点,确保集群配置一致。 2. **脚本与程序部署** 在运维自动化中,xsync 可用于将启动脚本、监控程序、补丁文件等快速部署到所有节点,简化维护流程。 3. **日志与数据归档** 在某些场景下,xsync 也可用于从多个节点收集日志文件或临时数据,集中归档到管理节点,便于分析和审计。 4. **测试环境快速部署** 在开发与测试阶段,xsync 可用于快速将新版本代码或测试脚本部署到多个测试节点,提升迭代效率。 ### 示例脚本结构 以下是一个典型的 xsync 脚本简化示例: ```bash #!/bin/bash # 定义目标主机列表 hosts=("node1" "node2" "node3") # 获取要同步的文件路径 files=$@ # 遍历每个主机并执行 rsync 同步 for host in "${hosts[@]}" do rsync -avz -e ssh $files $host:/path/to/target/ done ``` 此脚本接受多个文件路径作为参数,并将它们同步到所有定义的远程主机上的指定目录中。 ### 适用场景 - 需要频繁更新集群节点文件的运维任务。 - 配置管理工具(如 Ansible、Puppet)尚未部署的小型集群。 - 快速部署与测试环境的轻量级同步需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值