循環復制文件到所有節點的相同目錄下,在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文件,有則配置完成!