一、分发配置:rsync-script命令详解
### --- 编写集群分发脚本rsync-script

~~~     rsync 远程同步工具
~~~     rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
~~~     rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。
~~~     scp是把所有文件都复制过去。
### --- 基本语法
### --- 选项参数说明表2-2
~~~     命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
rsync -rvl $pdir/$fname $user@$host:$pdir/$fname
选项 功能
-r 递归
-v  显示复制过程
-l  拷贝符号连接
### --- rsync案例
~~~     五台虚拟机安装rsync (执行安装需要保证机器联网)

[root@hadoop01 ~]# yum install -y rsync
~~~     # 把hadoop01机器上的/opt/yanqi/software目录同步到其它服务器的root用户下的/opt/目录

[root@hadoop01 ~]# rsync -rvl /opt/yanqi/software/ root@hadoop02:/opt/yanqi/software/
hadoop-2.9.2.tar.gz

[root@hadoop02 ~]# ll /opt/yanqi/software/
-rw-r--r-- 1 root root 366447449 Aug  8 18:08 hadoop-2.9.2.tar.gz
-rw-r--r-- 1 root root 194151339 Jun 30  2020 jdk-8u231-linux-x64.tar.gz
二、集群分发脚本编写
### --- 需求:循环复制文件到集群所有节点的相同目录下

~~~     # rsync命令原始拷贝:
rsync -rvl /opt/module root@hadoop05:/opt/
### --- 期望脚本
### --- 说明:在/usr/local/bin这个目录下存放的脚本,root用户可以在系统任何地方直接执行。

~~~     脚本+要同步的文件名称
三、rsync脚本实现
### --- 脚本实现
~~~     在/usr/local/bin目录下创建文件rsync-script,文件内容如下:

[root@hadoop01 ~]# cd /usr/local/bin/
[root@hadoop01 bin]# touch rsync-script
[root@hadoop01 bin]# vim rsync-script
~~~     # 在文件中编写shell代码

#!/bin/bash

#1 获取命令输入参数的个数,如果个数为0,直接退出命令
paramnum=$#
if((paramnum==0)); then
echo no params;
exit;
fi

#2 根据传入参数获取文件名称
p1=$1
file_name=`basename $p1`
echo fname=$file_name

#3 获取输入参数的绝对路径

pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取用户名称
user=`whoami`

#5 循环执行rsync

for((host=1; host<4; host++)); do
    
echo ------------------- hadoop0$host --------------
  rsync -rvl $pdir/$file_name $user@hadoop0$host:$pdir

done
### --- 脚本配置说明——副本

#!/bin/bash
#需求:循环复制文件到集群所在节点的相同目录下
#使用方式:脚本+需要复制的文件名称
#脚本编写大致步骤
#1 获取传入脚本的参数,参数个数
#1 获取命令输入参数的个数,如果个数为0,直接退出命令
paramnum=$#
if((paramnum==0)); then
echo no params;
exit;
fi

#2 根据传入参数获取文件名称
p1=$1
file_name=`basename $p1`
echo fname=$file_name

#3 获取输入参数的绝对路径

pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取用户名称
user=`whoami`

#5 循环执行rsync

for((host=1; host<6; host++)); do
    
echo ------------------- hadoop0$host --------------
  rsync -rvl $pdir/$file_name $user@hadoop0$host:$pdir

done
四、设置并执行脚本
### --- 修改脚本 rsync-script 具有执行权限

[root@hadoop01 ~]# chmod 777 /usr/local/bin/rsync-script
### --- 调用脚本形式:rsync-script 文件名称

[root@hadoop01 ~]#  rsync-script /usr/local/bin/rsync-script  
------------------- hadoop01 --------------
sending incremental file list
------------------- hadoop02 --------------
sending incremental file list
------------------- hadoop03 --------------
sending incremental file list
------------------- hadoop04 --------------
sending incremental file list
------------------- hadoop05 --------------
sending incremental file list
五、调用脚本分发Hadoop安装目录到其它节点
### --- shell脚本的编写不要求大家掌握,看到别人编写的脚本要能读懂!!

[root@hadoop01 ~]# rsync-script /opt/yanqi/servers/hadoop-2.9.2

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm’d both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 
版权声明:本文为yanqi_vip原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yanqivip/p/16156043.html