SS00005.PBpositions——|Hadoop&PB级离线数仓.v05|——|Hadoop.v05|rsync-script脚本编写|

本文详细介绍了如何利用rsync命令及其脚本来实现文件在多台服务器之间的快速同步。通过示例展示了rsync的基本语法、选项参数、案例以及脚本的编写和执行过程,特别强调了rsync相对于scp的优势在于只同步差异文件,提高了效率。最后,提供了一个循环分发文件到集群所有节点的shell脚本,并演示了如何调用该脚本进行实际操作。
摘要由CSDN通过智能技术生成
一、分发配置: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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值