循环复制文件到所有节点的相同目录下,在Hadoop开发中通常需要将所修改的配置信息更新到其他节点,这个时候编写xsync脚本就可以轻松实现修该一次同步所有。
rsync 远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点,它只是拷贝文件不同的部分,因而减少了网络负担。
rsync具有可以使本地和远程的两台主机之间的数据快速同步镜像远程备份的功能,这个功能类似ssh带scp的命令,但是有优于scp的功能,scp每次都是全量拷贝,而rsync是增量拷贝。
rsync还可以在本地主机的不同文件或者目录之间全量和增量的复制,类似于cp命令,cp命令是全量拷贝,而rsync是增量拷贝。
rsync还可以实现删除文件和目录的功能,相当于rm命令
一个rsync相当于scp,cp,rm命令,并且还忧于他们每个命令,因为rsync具有增量备份的功能
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
准备工作:安装rsync
1)下载解压安装
rsync分为服务端和客户端安装,官网下载:https://rsync.samba.org/
#服务端安装
tar zxvf rsync-3.1.3.tar.gz -C /usr/tmp cd /usr/tmp/rsync-3.1.3 ./configure --prefix=/usr/local/rsync/ make && make install
#或者通过yum安装服务端
yum -y install rsync xinetd
vi /etc/xinetd.d/rsync
将yes 修改为no IPV6修改为IPV4
vi /etc/rsyncd.conf 新建文件
uid = root
gid = root
use chroot = no
max connections = 400
strict modes = yes
port = 873
commet = This is MySQL Backup Data
ignore errors
read only = no
list = no
auth users =cc
secrets file = /etc/rsync.pas
hosts allow = 192.168.113.0/24,192.168.112.0/24,192.168.122.0/24,192.168.115.0/24
hosts deny =0.0.0.0/0
pid file = /var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file = /var/log/rsyncd.log
[wms2db]
path=/data1/wms2db/
[esb]
path=/data1/esb/
[orabenlai]
path=/data1/orabli/
注明:
1,#auth users = test 注释了,匿名用户,不用密码也可以同步文件
2,/etc/rsync.pas 创建的用户和密码是rsync程序的用户和密码,如数据库sql server的sa一样,和系统账户无关
3,这里可以配置多个模块
4.vi /etc/rsync.pas创建密码文件
svntrasfer:123456
启动rsync服务用xinetd超级进程启动/etc/rc.d/init.d/xinetd reload
#客户端安装 yum -y install rsync touch /etc/rsyncd.conf 创建空文件
2)编写xsync脚本
在/home/hadoo/目录下创建bin目录,并在bin目录下创建xsync文件
mkdir bin cd bin/ touch xsync vim xsync
#!/bin/bash # 1 获取输入参数个数,如果没有参数直接退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 获取文件名称 p1=$1 echo $p1 fname=`basename $p1` echo fname=$fname #3 获取上级目录的绝对路径 pdir=`cd -P $(dirname $p1);pwd` echo pdir=$pdir #4 获取当前用户名称 user=`whoami` #5 循环 for((host=102;host<104;host++));do echo --------------------hadoop-$host--------------- rsync -rvl $pdir/$fname $user@hadoop-$host:$pdir done
#注意:这个for循环中的hostname设置根据你的集群实际情况设置,可以查看你的hosts文件
测试 xsync bin/ 查看其他集群的hadoop用户的bin目录下是否有xsync文件,有则配置完成!