一、分发配置: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<6; 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安装目录到其它节点
### --- 调用脚本分发Hadoop安装目录到其它节点
~~~ shell脚本的编写不要求大家掌握,看到别人编写的脚本要能读懂!!
[root@hadoop01 ~]# rsync-script /opt/yanqi/servers/hadoop-2.9.2