Linux 基于 rsync 实现集群分发脚本 xsync

一、rsync 简介

        rsyncremote 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

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐的小三菊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值