|NO.Z.00011|——————————|^^ 部署 ^^|——|Hadoop&Hadoop核心框架.V11|——|Hadoop.v11|rsync-script脚本编写|

一、[Hadoop完全分布式集群搭建之编写分发脚本]
### --- 分发配置:rsync-script命令详解
### --- 编写集群分发脚本rsync-script

~~~     rsync 远程同步工具
~~~     rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
~~~     rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对# 差异文件做更新。
~~~     scp是把所有文件都复制过去。
### --- 基本语法

~~~     # 命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
rsync -rvl $pdir/$fname $user@$host:$pdir/$fname
二、选项参数说明表2-2
选项 功能
-r 递归
-v  显示复制过程
-l  拷贝符号连接
三、rsync案例
### --- 三台虚拟机安装rsync (执行安装需要保证机器联网)

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

[root@linux121 ~]# rsync -rvl /opt/yanqi/software/ root@linux122:/opt/yanqi/software/
hadoop-2.9.2.tar.gz
[root@linux122 ~]# 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@linux123:/opt/
### --- 期望脚本

~~~     脚本+要同步的文件名称
~~~     说明:在/usr/local/bin这个目录下存放的脚本,root用户可以在系统任何地方直接执行。
四、脚本实现
### --- 在/usr/local/bin目录下创建文件rsync-script,文件内容如下:

[root@linux121 ~]# cd /usr/local/bin/
[root@linux121 bin]# touch rsync-script
[root@linux121 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=121; host<124; host++)); do
    
echo ------------------- linux$host --------------
  rsync -rvl $pdir/$file_name $user@linux$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=121; host<124; host++)); do
    
echo ------------------- linux$host --------------
  rsync -rvl $pdir/$file_name $user@linux$host:$pdir

done
### --- 修改脚本 rsync-script 具有执行权限

[root@linux121 bin]# chmod 777 rsync-script
### --- 调用脚本形式:rsync-script 文件名称

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

[root@linux121 bin]# 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

 

posted on   yanqi_vip  阅读(28)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示