xsync同步脚本的使用

xsync同步脚本的使用xsync同步脚本的使用1.简介在集群机器配置时,经常需要将一个文件或目录copy到同样的多台集群上,如果一个一个机器去复制,比较麻烦。如果有一个办法,通过一条命令就可以实现这个目的,就简单多了。xsync就是这样一个同步脚本。xsync其实是对rsync脚本的二次封装,脚本内容可以根据自己需要进行修改。2.配置集群hostname2.1配置hostname文件在每台机器执行命令c…

大家好,又见面了,我是你们的朋友全栈君。

xsync同步脚本的使用

1.简介

在集群机器配置时,经常需要将一个文件或目录copy到同样的多台集群上,如果一个一个机器去复制,比较麻烦。如果有一个办法,通过一条命令就可以实现这个目的,就简单多了。xsync就是这样一个同步脚本。xsync其实是对rsync脚本的二次封装,脚本内容可以根据自己需要进行修改。

2.配置集群hostname

2.1 配置hostname文件

在每台机器执行命令

echo hostname1 > /etc/hostname
hostname hostname1

备注:hostname1 为主机名,最好能标识主机用途,例如:kafkaos1、kafkaos2。

2.2 配置hosts文件

修改完hostname后,将集群集群名称都加入到/etc/hosts文件中,以后登录不同机器,直接使用hostname而不用IP。
示例:

10.8.10.101 zkos1
10.8.10.102 zkos2
10.8.10.103 zkos3
10.8.10.104 zkos4
10.8.10.111 kafkaos1
10.8.10.112 kafkaos2
10.8.10.113 kafkaos3

3.配置免密登录

3.1 生成rsa密钥

使用命令ssh-keygen 生成rsa密钥,配置信息直接回车即可, 生成的密钥默认在当前用户主目录的.ssh目录下。
密钥文件有两个:

  • id_rsa 存放着私钥
  • id_rsa.pub 存放着公钥

命令执行结果如下:

[root@zkos1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:kXclvgbcNBCbW9Z88eP1brP1TtPOc+YAuWTw0xi4QrU root@zkos1
The key’s randomart image is:
±–[RSA 2048]—-+
| +o+ … |
| + O * o|
| + E B o.+|
| . o X …+|
| S o @ …|
| . + + …|
| . .o
|
| BO|
| =O|
±—[SHA256]—–+

3.2 copy机器自身公钥到目标机器

方法一

  1. 在目标机器的用户主目录创建.ssh目录

mkdir -p ~/.ssh

  1. 在本地执行远程拷贝命令

cd /root/.ssh
scp id_rsa.pub root@kafkaos1:/root/.ssh/authorized_keys

方法二

  1. 在本地先将id_rsa_pub 一份名为 authorized_keys

cp id_rsa.pub authorized_keys

  1. 使用rsync 命令同步到对方目录

rsync authorized_keys root@kafkaos1:/root/.ssh/

备注:该方法需要本地暂时没有authorized_keys,有的话先改名也可以,并且本地机器安装有rsync脚本。操作完记得删除本地的authorized_keys

方式三

ssh-copy-id -i ~/.ssh/id_rsa.pub root@server:/root/.ssh/

3.3 远程登录测试

输入命令

ssh root@kafkaos1

此时不再需要输入命令,可直接登录成功(若第一次连接,需保持对方公钥,提升时输入yes即可)。

4.xsync脚本使用

4.1 安装rsync脚本

xsync是对rsync脚本的二次封装,所以需要先下载rsync命令。
使用以下命令即可安装

yum install -y rsync

4.2 添加xsync脚本

在用户主目录的bin目录下添加脚本,脚本内容如下

#!/bin/sh

# 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount!=4)); then
    echo Usage: $0 filename servername startno endno
    exit;
fi


# 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

# 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 获取当前用户名称
user=`whoami`
# 获取hostname及起止号
slave=$2
startline=$3
endline=$4

# 循环
for((host=$startline; host<=$endline; host++)); do
    echo $pdir/$fname $user@$slave$host:$pdir
    echo ==================$slave$host==================
    rsync -rvl $pdir/$fname $user@$slave$host:$pdir
done

该脚本经过修改,需要携带4个参数,分别是

  • filename 待发送的文件或目录名
  • servername 服务器前缀名
  • startno 服务器编号起始编号
  • endno 服务器编号终止编号

4.3 测试

例如我要将当前目录下的a.t文件同步到服务器kafkaos2、kafkaos3上,使用命令

xsync a.t kafkaos 2 3

执行结果如下

fname=a.t
pdir=/root
/root/a.t root@kafkaos2:/root
kafkaos2
sending incremental file list
a.t
sent 470 bytes received 35 bytes 1,010.00 bytes/sec
total size is 383 speedup is 0.76
/root/a.t root@kafkaos3:/root
kafkaos3
sending incremental file list
a.t
sent 470 bytes received 35 bytes 336.67 bytes/sec
total size is 383 speedup is 0.76

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136913.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月2日 下午9:00
下一篇 2022年6月2日 下午9:00


相关推荐

  • [c/c++]——最长回文子串「建议收藏」

    [c/c++]——最长回文子串「建议收藏」最长回文子串已经很久没有更新关于leetcode的题解了,一个是觉得太费时间,二一个目前网上也有很全面的解答,但是在写leetcode的最长回文子串时,发现很多同学的代码都很长(实际上几行就可以解决的事情),并且c++解答的代码不够完整。最关键的是在一种“马拉车”的算法卡了很久很久,今天把几种求解的方法全部都整理出来,方便大家也便于自己以后复习。ps:讲解很少,都是整理出可看性很高的源码方法…

    2022年5月2日
    54
  • Map 的 key、value 是否允许为null

    Map 的 key、value 是否允许为null

    2021年6月19日
    165
  • OpenClaw + MCP:让 AI 助手连接任意工具的终极方案

    OpenClaw + MCP:让 AI 助手连接任意工具的终极方案

    2026年3月14日
    2
  • 🤖Deepseek万能指令公式,高效使用指南

    🤖Deepseek万能指令公式,高效使用指南

    2026年3月15日
    2
  • github 代理

    github 代理github 代理网址 https ghproxy com 终端命令行支持终端命令行 gitclone wget curl 等工具下载 支持 raw githubuserco com gist github com gist githubuserco com 文件下载 注意 不支持 SSHKey 方式 gitclone 下载 gitclonegitc ghproxy com https github com

    2026年3月19日
    1
  • springbean生命周期通俗一点_spring为啥是单例模式

    springbean生命周期通俗一点_spring为啥是单例模式一、Spring核心模块介绍1.SpringCore:Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。2.SpringContext:构建于Core封装包基础上的Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N).

    2026年1月21日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号