集群分发脚本xsync
1. scp(secure copy)安全拷貝
- (1)scp定義:
scp可以實(shí)現(xiàn)服務(wù)器與服務(wù)器之間的數(shù)據(jù)拷貝。(from?server1?to?server2)
- (2)基本語法
scp????-r ?????????$pdir/$fname ?????????????$user@hadoop$host:$pdir/$fname
命令 ??遞歸 ??????要拷貝的文件路徑/名稱 ???目的用戶@主機(jī):目的路徑/名稱
- (3)案例實(shí)操
(a)在hadoop101上,將hadoop101中/opt/module目錄下的軟件拷貝到hadoop102上。
[hadoop@hadoop101?/]$ scp -r /opt/module ?root@hadoop102:/opt/module
(b)在hadoop103上,將hadoop101服務(wù)器上的/opt/module目錄下的軟件拷貝到hadoop103上。
[hadoop@hadoop103?opt]$sudo scp -r atguigu@hadoop101:/opt/module root@hadoop103:/opt/module
(c)在hadoop103上操作將hadoop101中/opt/module目錄下的軟件拷貝到hadoop104上。
[hadoop@hadoop103?opt]$ scp -r atguigu@hadoop101:/opt/module root@hadoop104:/opt/module
注意:拷貝過來的/opt/module目錄,別忘了在hadoop102、hadoop103、hadoop104上修改所有文件的,所有者和所有者組。sudo chown?hadoop:hadoop?-R /opt/module
(d)將hadoop101中/etc/profile文件拷貝到hadoop102的/etc/profile上。
[hadoop@hadoop101 ~]$ sudo scp /etc/profile root@hadoop102:/etc/profile
(e)將hadoop101中/etc/profile文件拷貝到hadoop103的/etc/profile上。
[hadoop@hadoop101 ~]$ sudo scp /etc/profile root@hadoop103:/etc/profile
(f)將hadoop101中/etc/profile文件拷貝到hadoop104的/etc/profile上。
[hadoop@hadoop101 ~]$ sudo scp /etc/profile root@hadoop104:/etc/profile
注意:拷貝過來的配置文件別忘了source一下/etc/profile,。
2. ?rsync?遠(yuǎn)程同步工具
rsync主要用于備份和鏡像。具有速度快、避免復(fù)制相同內(nèi)容和支持符號鏈接的優(yōu)點(diǎn)。
rsync和scp區(qū)別:用rsync做文件的復(fù)制要比scp的速度快,rsync只對差異文件做更新。scp是把所有文件都復(fù)制過去。
(1)基本語法
rsync ???-av ??????$pdir/$fname ?????????????$user@hadoop$host:$pdir/$fname
命令 ??選項(xiàng)參數(shù) ??要拷貝的文件路徑/名稱 ???目的用戶@主機(jī):目的路徑/名稱
??選項(xiàng)參數(shù)說明
表2-2
| 選項(xiàng) | 功能 |
| -a | 歸檔拷貝 |
| -v | 顯示復(fù)制過程 |
(2)案例實(shí)操
(a)把hadoop101機(jī)器上的/opt/software目錄同步到hadoop102服務(wù)器的root用戶下的/opt/目錄
[hadoop@hadoop101 opt]$ rsync -av /opt/software/?hadoop102:/opt/software
3. xsync集群分發(fā)腳本
(1)需求:循環(huán)復(fù)制文件到所有節(jié)點(diǎn)的相同目錄下
(2)需求分析:
(a)rsync命令原始拷貝:
rsync ?-av ????/opt/module ? ?root@hadoop103:/opt/
(b)期望腳本:
xsync要同步的文件名稱
(c)說明:在/home/hadoop/bin這個(gè)目錄下存放的腳本,hadoop用戶可以在系統(tǒng)任何地方直接執(zhí)行。
(3)腳本實(shí)現(xiàn)
(a)在/home/hadoop目錄下創(chuàng)建xsync文件
cd /home/hadoop
vim xsync
在該文件中編寫如下代碼
#!/bin/bash#1. 判斷參數(shù)個(gè)數(shù)if [ $# -lt 1 ]thenecho Not Enough Arguement!exit;fi#2. 遍歷集群所有機(jī)器for host in hadoop102 hadoop103 hadoop104doecho ==================== ?$host ?====================#3. 遍歷所有目錄,挨個(gè)發(fā)送for file in $@do#4 判斷文件是否存在if [ -e $file ]then#5. 獲取父目錄pdir=$(cd -P $(dirname $file); pwd)#6. 獲取當(dāng)前文件的名稱fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidonedone
(b)修改腳本 xsync 具有執(zhí)行權(quán)限
chmod +x?xsync
(c)將腳本移動到/bin中,以便全局調(diào)用
sudo mv xsync /bin/
(d)測試腳本
sudo xsync /bin/xsync
?
總結(jié)
以上是生活随笔為你收集整理的集群分发脚本xsync的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。