大数据集群节点之间的文件或配置同步方法(集群分发脚本) 1
一, scp(secure copy- 安全拷贝)命令
1.1 scp 入门
- [scp的定义]
 scp可以实现服务器与服务器之间的数据拷贝.
- [scp语法]
		scp        -r             $pdir/$filename                    $user@$host:$pdir/$filename
			 #递归(传输的是目录)      # 要拷贝的文件路径/名称      #拷贝目的地 用户名@主机名: 目的地路径/目录名
1.2 scp案例实操
-  在bigdata01中, 将bigdata02主机 root目录中.ssh目录下的 id_rsa2.pub文件传输到bigdata01主机root目录下的.ssh目录中.
  
-  在bigdata01中, 将bigdata02中主机中 win10用户目录下的 /usr/tmp目录传输到bigdata01主机root目录下的.ssh目录中.
  
-  在bigdata01中, 将bigdata01主机中root目录下.ssh目录中的 authorized_keys传输到bigdata02主机root目录下的.ssh目录中.
  
-  在bigdata01中, 将bigdata02主机主机中 win10用户目录下的 /ust/tmp目录传输到bigdata03主机root目录下的.ssh目录中.
  
二, rsync(remote sync-远程同步)命令
2.1 rsync 入门
-  [定义] 
 rsync主要用于增量备份和镜像, 具有速度快, 避免复制相同内容和支持符号链接的优点
-  [rsync 与 scp 的区别] - rsync 可以实现本地主机和远程主机之间的文件同步(包括本地同步到远程, 远程同步到本地两种方式), 也可以实现本地不同路径下文件的同步, 但不能实现远程路径1到远程路径2之间的同步(scp可以实现);
- 用rsync工具做文件的复制要比scp速度快, 因为除了第一次之外, rsync 只对差异文件做更新, 而scp每次都是把所有的文件都复制过去.
 
-  [基本语法] 
		rsync        -av             $pdir/$filename                    $user@$host:$pdir/$filename
			 	    #选项参数     # 要拷贝的文件路径/名称      #拷贝目的地 用户名@主机名: 目的地路径/目录名
- 选项参数说明
-a 归档拷贝
-v 显示复制过程
2.2 案例实操
-  删除bigdata01的knownhosts, 
  
  
-  用bigdata02的去同步, 
  
三, xsync 集群分发脚本
[需求]
	循环复制(同步)文件到所有结点的相同目录下, 为了节省时间我们只复制不相同的部分(差异化更新).
[需求分析]
- 借助rsync命令实现差异化更新:
		rsync        -av             $pdir/$filename                    $user@$host:$pdir/$filename
			 	    #选项参数     # 要拷贝的文件路径/名称      #拷贝目的地 用户名@主机名: 目的地路径/目录名
- 期望的脚本使用方式:
			`xsync  要同步的文件名称`
- 期望脚本在任何路径都能使用(脚本路径被添加到了全局环境变量中)
- 脚本实现:
-  在 /opt目录中新建脚本文件xsync.sh
  
-  编写脚本文件, vi sync.sh
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
        echo NOT Enough Argument!
        exit;
fi
#2. 遍历集群所有机器
for host in bigdata02 bigdata03
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
-  给脚本赋予执行权限 
  
-  把脚本路径添加到全局环境变量中 
注意: 使用/etc/profile同样也是可行的, 在这里我们使用下面这种方式.
关于这种方式的说明看这篇文章

千万不要忘了
source /etc/profile!!
- 检验环境变量是否配置成功
  
- 测试脚本工作情况:
  
- 脚本正常运行, 我们来同步一下各个节点机器的环境变量

在这之后, 别忘了去使用 source /etc/profile 刷新节点的环境变量噢!!!
 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号