linux中編寫同步檔案的指令碼
阿新 • • 發佈:2020-07-06
搭叢集最麻煩的就是修改配置檔案,如果只用修改一個機器上的配置檔案,然後用一個指令碼就可以把配置檔案同步到其他機器上,豈不快哉!
編寫一個名為xsync
的指令碼檔案:
作用: 將當前機器的檔案,同步到叢集所有機器的相同路徑下!
hadoop102:/A/a , 執行指令碼後,將此檔案同步到叢集中所有機器的 /A/a
使用者在使用xsync時,只需要傳入要同步的檔案即可
xysnc a
不管a是一個相對路徑還是絕對路徑,都需要將a轉換為絕對路徑
!
檔案的絕對路徑=父路徑+檔名
:
父路徑: dirpath=$(cd dirname /home/atguigu/hi
; pwd -P)
檔名: filename=basename hi
pwd的 -P引數是為了避免出現軟連結導致的路徑問題,-P可以使軟連結顯示出真實的連結
核心命令:
for(())
do
rsync -rvlt path1
done
正式檔案:
#!/bin/bash
#校驗引數是否合法
if(($#==0))
then
echo 請輸入要分發的檔案!
exit;
fi
#獲取分發檔案的絕對路徑
dirpath=$(cd `dirname $1`; pwd -P)
filename=`basename $1`
echo 要分發的檔案的路徑是:$dirpath/$filename
#迴圈執行rsync分發檔案到叢集的每條機器
for((i=101;i<=103;i++))
do
echo ---------------------hadoop$i---------------------
rsync -rvlt $dirpath/$filename [email protected]$i:$dirpath
done