一、rsync 简介
rsync(remote synchronize)是 Liunx/Unix 下的一个远程数据同步工具。它可以通过 LAN/WAN 快速同步多台主机间的文件和目录,并适当利用 rsync 算法(差分编码)以减少数据的传输。
rsync 算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。除此之外,rsync 支持拷贝文件、显示目录属性等,并可以选择性的压缩以及递归拷贝。
二、安装
如果想要几台服务器互相传文件,则需要每台服务器都安装这个工具,如果只是一个节点向其他节点发送文件,那么安装和修改配置文件只需要操作一台服务器即可。
yum install -y rsync
三、修改配置文件
1、在 etc/hosts 中添加映射,信息如下:
192.168.229.165 mylinux01
192.168.229.169 mylinux02
192.168.229.168 mylinux03
2、配置 ssh 免密,执行下面的命令
# 删除原有的配置文件
rm -rf /root/.ssh
# 生成密钥,执行命令三次回车即可
ssh-keygen
# 切换目录,并重命名文件
cd /root/.ssh
mv id_rsa.pub authorized_keys
# 配置免密操作
scp -r /root/.ssh mylinux02:/root
scp -r /root/.ssh mylinux03:/root
四、编写 xsync 脚本
1、在 mylinux01 服务器的 /bin 目录下创建一个文件名为 xsync 的文件,内容如下所示:
#!/bin/bash
# 1、判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
# 2、遍历集群所有机器
for host in mylinux01 mylinux02 mylinux03 # 注意修改hosts对应解析
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
2、赋权
chmod 777 xsync
3、测试
xsync test