大数据集群节点之间的文件或配置同步方法(集群分发脚本) 1
一, scp(secure copy- 安全拷贝)命令1.1 scp 入门[scp的定义]scp可以实现服务器与服务器之间的数据拷贝.[scp语法]scp-r$pdir/$filename$user@$host:$pdir/$filename#递归(传输的是目录)# 要拷贝的文件路径/名称#拷贝目的地 用户名@主机名: 目的地路径/目录名1.2 scp案例实操在bi
一, 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
刷新节点的环境变量噢!!!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)