前言
在搭建集群环境时,经常会遇到需要分发的情况。rsync是类unix系统下的数据镜像备份工具,rsync的目的是实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地不同路径下文件的同步,但不能实现远程路径1到远程路径2之间的同步(scp可以实现)。
一、安装rsync工具
#首先确保集群中每台服务器安装rsync工具
yum -y install rsync
systemctl start rsyncd.service
systemctl enable rsyncd.service
二、创建编辑xsync文件
1.创建xsync文件
#在/usr/local/bin下新建xsync文件
cd /usr/local/bin
touch xsync
#给文件赋读写权限
chmod 777 xsync
#编辑xsync文件
2.编辑xsync文件
以下为xsync脚本代码,注意,如果服务器之间无法用主机名ping通,脚本是跑不起来的,可以看一下这篇帖子
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器,hadoop为主机名
for host in hadoop1 hadoop2 hadoop3
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
echo pdir=$pdir
#6. 获取当前文件的名称
fname=$(basename $file)
echo fname=$fname
#7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
ssh $host "mkdir -p $pdir"
#8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
rsync -av $pdir/$fname $USER@$host:$pdir
else
echo $file does not exists!
fi
done
done
保存退出后,即可使用xsync 文件
命令