xsync同步脚本的使用
1. 简介:
在集群机器配置时,经常需要将一个文件或目录copy到同样的多台集群上,如果一个一个机器去复制,比较麻烦。如果有一个办法,通过一条命令就可以实现这个目的,就简单多了。xsync就是这样一个同步脚本。xsync其实是对rsync脚本的二次封装,脚本内容可以根据自己需要进行修改。
2.配置集群hosts
- 在每台机器配置hostname文件
[root@zookeeper20 conf]# hostnamectl set-hostname zookeeper20
- 配置hosts文件,修改完hostname后,将集群集群名称都加入到/etc/hosts文件中,以后登录不同机器,直接使用hostname而不用IP。
示例:
[root@zookeeper20 conf]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.0.20 zookeeper20
10.10.0.21 zookeeper21
10.10.0.22 zookeeper22
3.配置免密登录
*使用命令ssh-keygen 生成rsa密钥,配置信息直接回车即可, 生成的密钥默认在当前用户主目录的.ssh目录下。
密钥文件有两个:
id_rsa 存放着私钥
id_rsa.pub 存放着公钥
[root@zookeeper20 ~]# 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]-----+
拷贝公钥到对应主机
ssh-copy-id -i ~/.ssh/id_rsa.pub root@server:/root/.ssh/
4.xsync脚本使用
- 安装rsync脚本
xsync是对rsync脚本的二次封装,所以需要先下载rsync命令。
使用以下命令即可安装
yum install -y rsync
- 添加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 服务器编号终止编号
- 例如我要将当前目录下的a.t文件同步到服务器zookeeper20、zookeeper21上,使用命令
xsync a.t zookeeper 20 21
#############################################################