1. 程式人生 > 實用技巧 >linux中編寫同步檔案的指令碼

linux中編寫同步檔案的指令碼

搭叢集最麻煩的就是修改配置檔案,如果只用修改一個機器上的配置檔案,然後用一個指令碼就可以把配置檔案同步到其他機器上,豈不快哉!

編寫一個名為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