分发配置
编写集群分发脚本rsync-script
rsync 远程同步工具
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文
件都复制过去。
- 基本语法
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
2. 选项参数说明
rsync -rvl
p
d
i
r
/
pdir/
pdir/fname
u
s
e
r
@
user@
user@host:
p
d
i
r
/
pdir/
pdir/fname
| 选项 | 功能 |
|---|---|
| -r | 递归 |
| -v | 显示复制过程 |
| -l | 拷贝符号连接 |
rsync同步
1.三台虚拟机安装rsync (执行安装需要保证机器联网)
yum install -y rsync
2.把linux121机器上的/opt/lagou/software目录同步到linux122服务器的root用户下的/opt/目录
[root@linux121 opt]$ rsync -rvl /opt/lagou/software/
root@linux122:/opt/lagou/software
集群分发脚本编写
1.需求:循环复制文件到集群所有节点的相同目录下
rsync命令原始拷贝: rsync -rvl /opt/module root@linux123:/opt/
2. 期望脚本 脚本+要同步的文件名称 3. 说明:在/usr/local/bin这个目录下存放的脚本,root用户可以在系统任何地方直接执行。 4. 脚本实现 (1)在/usr/local/bin目录下创建文件rsync-script,文件内容如下: [root@linux121 bin]$ touch rsync-script [root@linux121 bin]$ vim rsync-script
在文件中编写shell代码
#!/bin/bash
#需求:循环复制文件到集群所有节点的相同目录下
#使用方式:脚本+需要复制的文件名称
#脚本编写大致步骤
#1.获取传入脚本的参数,参数个数
paramnum=$#
if((paramnum==0));
then
echo no args;
exit;
fi
#2.获取到文件名称
p1=$1
file_name=`basename $p1`
echo fname=${file_name}
#3.获取到文件的绝对路径,获取到文件目录信息
dir_name=`cd -P $(dirname $p1);pwd`
#dir_name=`dirname $p1`
echo dirname=${dir_name}
#4.获取到当前用户信息
user=`whoami`
#5.执行rsync命令,循环执行,要把数据发送到集群中其他节点上
for((host=121;host<124;host++));
do
echo --------target hostname=linux$host------
rsync -rvl ${dir_name}/${file_name} ${user}@linux${host}:${dir_name}
done
(2)修改脚本 rsync-script 具有执行权限
[root@linux121 bin]$ chmod 777 rsync-script
(3)调用脚本形式:rsync-script 文件名称
[root@linux121 bin]$ rsync-script /home/root/bin
(4) 调用脚本分发Hadoop安装目录到其它节点
[root@linux121 bin]$ rsync-script /opt/lagou/servers/hadoop-2.9.2
在其他服务器上查看分发的文件目录,是否一样



