Linux之rsync同步分發指令碼編寫.
前置知識
rsync 可以在當前機器用SSH命令登入別的機器來操作別的機器執行指定的命令
登入並且執行命令, 給命令結果返回回來,注意登入人的標識
ssh root@zjj102 ls /usr/local
給 zjj102機器上的/usr/local 路徑下的內容列印出來了.
[root@zjj101 soft]# ssh root@zjj102 ls /usr/local
apache-tomcat-8.5.38
sentinelLog.log
share
src
startUpSentinel.sh
[root@zjj101 soft]#
編寫分發指令碼
如果多個機器同步檔案的話你不可能去手動挨個執行 rsync 命令去同步檔案,這樣會累死, 直接寫個同步指令碼去批量同步配置,相當於把命令封裝到shell指令碼里面,這樣不用每次都寫一遍命令,使用起來也很方便.
下面指令碼就是我可以通過 zjj101 機器向 zjj102和zjj103機器上同步資料夾裡面的檔案,如果資料夾裡面有軟連線的話,也會同步軟連線對應的目錄的檔案.
xsync檔案的內容:
#!/bin/bash
#校驗引數是否合法
if(($#==0))
then
echo 請輸入要分發的檔案!
exit;
fi
# -P 如果是軟連線也能獲取分發檔案的絕對路徑
dirpath=$(cd `dirname $1`; pwd -P)
filename=`basename $1`
echo 要分發的檔案的路徑是:$dirpath/$filename
#迴圈執行rsync分發檔案到叢集的每條機器
# for迴圈適當修改一下, 也可以在這裡寫死你自己的服務名字.
# 我這裡的伺服器名字是 zjj102和 zjj103
for((i=102;i<=103;i++))
do
echo ---------------------zjj$i---------------------
rsync -rvlt $dirpath/$filename root@zjj$i:$dirpath
done
使用rsync分發指令碼
zjj101機器下的 “/root/soft” 路徑有 demo資料夾,
而zjj102和zjj103機器下的"/root/soft" 路徑沒有demo資料夾
下面開始給 zjj101檔案下的demo資料夾裡面的東西同步到zjj102和zjj103上面.
準備工作
zjj101機器
[root@zjj101 soft]# pwd
/root/soft
[root@zjj101 soft]# ls
data demo docker hadoop-2.7.2 hive-1.2.1 movie_info.txt myconf sortby-result tmp xsync
[root@zjj101 soft]# cd demo/
[root@zjj101 demo]# ls
demoSCP.txt
[root@zjj101 demo]# cat demoSCP.txt
sdklasjlkd
[root@zjj101 demo]#
zjj102機器
[root@zjj102 soft]# pwd
/root/soft
[root@zjj102 soft]# ls
hadoop-2.7.2
[root@zjj102 soft]#
zjj103機器
[root@zjj103 soft]# pwd
/root/soft
[root@zjj103 soft]# ls
hadoop-2.7.2 myconf
[root@zjj103 soft]#
開始同步
相對路徑
zjj101
[root@zjj101 soft]# sh xsync demo/
要分發的檔案的路徑是:/root/soft/demo
---------------------zjj102---------------------
sending incremental file list
demo/
demo/demoSCP.txt
sent 136 bytes received 39 bytes 350.00 bytes/sec
total size is 11 speedup is 0.06
---------------------zjj103---------------------
sending incremental file list
demo/
demo/demoSCP.txt
sent 136 bytes received 39 bytes 116.67 bytes/sec
total size is 11 speedup is 0.06
[root@zjj101 soft]#
zjj102檢視結果
[root@zjj102 soft]# ls
demo hadoop-2.7.2
[root@zjj102 soft]# cd demo/
[root@zjj102 demo]# ls
demoSCP.txt
[root@zjj102 demo]# cat demoSCP.txt
sdklasjlkd
[root@zjj102 demo]#
此時發現 已經同步過來demo資料夾的內容了, zjj103就不貼上shell命令結果, 和zjj102一樣的結果,demo也被同步過來了.
絕對路徑
zjj101機器上新新增了個demo2.txt
然後使用 rsync指令碼同步一下,此時輸入的是絕對路徑 " sh xsync /root/soft/demo" 這個命令, zjj102和zjj103機器發現已經被同步了demo資料夾裡面新增的檔案.
[root@zjj101 demo]# pwd
/root/soft/demo
[root@zjj101 demo]# ls
demo2.txt demoSCP.txt
[root@zjj101 demo]# cd ../
[root@zjj101 soft]# ls
data demo docker hadoop-2.7.2 hive-1.2.1 movie_info.txt myconf sortby-result tmp xsync
[root@zjj101 soft]# sh xsync /root/soft/demo
要分發的檔案的路徑是:/root/soft/demo
---------------------zjj102---------------------
sending incremental file list
demo/
demo/demo2.txt
sent 158 bytes received 39 bytes 131.33 bytes/sec
total size is 20 speedup is 0.10
---------------------zjj103---------------------
sending incremental file list
demo/
demo/demo2.txt
sent 158 bytes received 39 bytes 394.00 bytes/sec
total size is 20 speedup is 0.10
[root@zjj101 soft]#
zjj102
[root@zjj102 demo]# ls
demo2.txt demoSCP.txt
[root@zjj102 demo]#
相關文章
- Linux 檔案同步工具之 rsyncLinux
- scala入門之編寫scala指令碼指令碼
- Linux編寫Bash指令碼的10個技巧Linux指令碼
- linux編寫.sh指令碼並賦許可權Linux指令碼
- 油猴指令碼編寫指令碼
- 編寫git指令碼.shGit指令碼
- rsync客戶端一鍵安裝rsync指令碼(原始碼)客戶端指令碼原始碼
- Linux系統中Shell指令碼編寫的一點心得Linux指令碼
- EA指令碼編寫要點指令碼
- linux 利用rsync實現檔案增量同步Linux
- 編寫shell指令碼的規範指令碼
- systemd 編寫服務管理指令碼指令碼
- 如何編寫高效的 Shell 指令碼指令碼
- 如何使用zx編寫shell指令碼指令碼
- nGrinder中快速編寫groovy指令碼01-指令碼結構指令碼
- 小白也能操作Linux,十分鐘教你簡單的shell指令碼編寫邊學邊用Linux指令碼
- shell指令碼之if elif寫法指令碼
- 編寫自己的Acunetix WVS漏洞指令碼指令碼
- 技能篇:shell教程及指令碼編寫指令碼
- 從零開始編寫指令碼引擎指令碼
- 專案啟動指令碼的編寫指令碼
- rsync 同步目錄
- rsync實時同步
- 資料同步rsync
- Rsync資料同步
- rsync遠端同步
- 資料同步——rsync遠端同步
- linux彙編指令Linux
- 3.1 IDA Pro編寫IDC指令碼入門指令碼
- shell 指令碼如何編寫-致初學者指令碼
- 如何用 JMeter 編寫效能測試指令碼?JMeter指令碼
- awk命令和指令碼的編寫啟蒙指令碼
- 如何編寫冪等的 Bash 指令碼?- Arslan指令碼
- Linux命令---rsyncLinux
- (20201026已解決)bash指令碼中給rsync指定密碼指令碼密碼
- python寫的指令碼在kail Linux 執行Python指令碼AILinux
- 在Linux中,如何編寫一個指令碼來自動執行日常任務?Linux指令碼
- python編寫圖片主色轉換指令碼Python指令碼