• 集群分发脚本xsync


    编写集群分发脚本xsync

    1)scp 安全拷贝

    1)定义:

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

    2)特点

    scp会把整个文件对象赋值到目标服务器上

    3)基本语法

    scp    -r          $pdir/$fname              $user@$host:$pdir/$fname
    命令   递归       要拷贝的文件路径/名称    目的用户@主机:目的路径/名称
    例如
    scp -r /opt/module/hadoop/*   atguigu@hadoop102:/opt/module
    

    2)rsync(推荐使用)

    注:想使用rsync命令,必须提前安装

    安装语法

    yum install rsync
    

    1)特点

    只会对差异文件进行更新,而scp是把所有文件都复制过去

    2)基本语法

    rsync    -av       $pdir/$fname              $user@hadoop$host:$pdir/$fname
    命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称
    例如
    rsync -av /opt/software/* atguigu@hadoop103:/opt/software(这里要写父目录的路径)
    

    选项参数说明

    选项 功能
    -a 归档拷贝(类似于递归)
    -v 显示复制过程

    编写集群分发脚本(重点)

    1)需求:需要将当前文件或目录同步到当前集群所有节点

    2)思路

    使用原始命令需要发送N次,可以使用shell脚本,把原始命令放在循环内,可以重复使用

    采用rsync实现,因为rsync只会发送有差异的数据

    3)实现脚本

    #!/bin/bash
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
      echo Not Enough Arguement!
      exit;
    fi
    #2. 遍历集群所有机器
    for host in hadoop102 hadoop103 hadoop104
    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
    

    1)修改脚本xsync具有执行权限

    [atguigu@hadoop102 bin]$ chmod +x xsync
    

    2)将脚本复制到/bin中,以便全局调用

    如果当前用户没有bin目录,可以手动创建

    [atguigu@hadoop102 bin]$ sudo cp xsync /bin/
    

    脚本编写完成,可以测试了

  • 相关阅读:
    别让你的生活止于平庸!(摘)
    NSURLSession 请求
    第三方原理
    iOS实用的小技巧
    简书APP
    网络请求
    JQuery 简介
    struts2拦截器的实现原理及源码剖析
    hibernate配置文件注意点
    hibernate中三种状态
  • 原文地址:https://www.cnblogs.com/traveller-hzq/p/14043037.html
Copyright © 2020-2023  润新知