Linux分发脚本xsync

1.前提建议:建议先了解一下Linuxshell脚本

2.相关知识:

       (1)scp(secure copy)安全拷贝

       scp可以实现服务器与服务器之间的数据拷贝

       SCP的工作原理类似于SSHSecure Shell)协议,它通过加密通道传输文件,并使用用户凭证进行身份验证。用户可以使用SCP命令在远程主机之间复制文件,也可以从本地主机向远程主机复制文件

       基本语法:

       scp    -r        $pdir/$fname             $user@$host:$pdir/$fname

命令   递归     要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

      案例:

       在把hadoop1中的jdk文件传输给Hadoop2(/opt/module)

       第一种方式(在hadoop1上操作)

       scp -r /opt/module/jdk haha2@hadoop2:/opt/moudle/

       或者是在hadoop2上操作:

       scp -r haha1@hadoop1:/opt/moudle/jdk /opt/module

       (2)rsync远程同步工具

       rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点

       它可以通过远程shell或rsync协议进行文件传输、远程协作等。 可以用于备份本地文件到远程服务器,或将远程服务器上的文件同步到本地,也可以将多个服务器上的文件同步到一个中心服务器上

       基本语法:

       rsync    -av       $pdir/$fname             $user@$host:$pdir/$fname

命令   选项参数   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

       其中的参数 -a:归档拷贝

                        -v: 显示复制过程

案例:

       rsync -av /opt/module/Hadoop haha2@hadoop2:/opt/moudle/Hadoop

       (3)scp和rsync的区别:

       用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

3.xsync集群分发脚本:

       主要是在hadoop中把文件分发到所有节点的相同目录之下

       主要用到rsync命令

       期望脚本命令是xsync 同步文件名称

       (1)步骤:

       查看全局环境变量的路径 echo $PATH

       会显示出相关的全局环境变量生效的路径目录,其中有一个是/home/haha1/bin (这个目录在创建的时候没有创建,需要手动创建)

       (2)脚本实现:

[haha1@hadoop102 opt]$ cd /home/haha1

[haha1@hadoop102 ~]$ mkdir bin

[haha1@hadoop102 ~]$ cd bin

[haha1@hadoop102 bin]$ vim xsync

       文件中的代码:

  #!/bin/bash

#1. 判断参数个数

if [ $# -lt 1 ]

then

    echo Not Enough Arguement!

    exit;

fi

#2. 遍历集群所有机器(注意根据集群中的节点服务器的个数进行更改脚本

for host in hadoop1 hadoop2

do

    echo ====================  $host  ====================

    #3. 遍历所有目录,挨个发送

    for file in $@

    do

        #4. 判断文件是否存在

        if [ -e $file ]

            then

                #5. 获取父目录

                pdir=$(cd -P $(dirname $file); pwd)

                #6. 获取当前文件的名称

                fname=$(basename $file)

                ssh $host "mkdir -p $pdir"

                rsync -av $pdir/$fname $host:$pdir

            else

                echo $file does not exists!

        fi

    done

done

(3)修改文件的权限:chmod 777 xsync

(4)应用脚本分发给hadoop2

       xsync /home/haha1/bin

执行成功

参考文档:尚硅谷Hadoop3.1.3

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值