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
- Python rsync 伺服器之間資料夾同步指令碼Python伺服器指令碼
- Linux 指令碼編寫基礎Linux指令碼
- Linux指令碼編寫基礎Linux指令碼
- Linux指令碼編寫基礎(五)Linux指令碼
- Linux 指令碼編寫基礎(轉)Linux指令碼
- scala入門之編寫scala指令碼指令碼
- Windows Linux 之間rsync同步CODE檔案WindowsLinux
- gdb指令碼編寫指令碼
- Shell 指令碼編寫指令碼
- Linux編寫Bash指令碼的10個技巧Linux指令碼
- 油猴指令碼編寫指令碼
- 編寫git指令碼.shGit指令碼
- linux編寫.sh指令碼並賦許可權Linux指令碼
- rsync客戶端一鍵安裝rsync指令碼(原始碼)客戶端指令碼原始碼
- Linux 時間同步指令碼Linux指令碼
- EA指令碼編寫要點指令碼
- 編寫執行R指令碼指令碼
- 編譯FFMPEG原始碼的指令碼編寫案例編譯原始碼指令碼
- Linux 中高效編寫 Shell 指令碼的 10 個技巧Linux指令碼
- rsync同步配置
- linux rsync +inotify 實現 實時同步Linux
- 編寫shell指令碼的規範指令碼
- 如何編寫高效的 Shell 指令碼指令碼
- 如何使用zx編寫shell指令碼指令碼
- systemd 編寫服務管理指令碼指令碼
- Mac 編寫oracle 連線指令碼MacOracle指令碼
- Linux系統中Shell指令碼編寫的一點心得Linux指令碼
- [rsync]——rsync檔案同步和備份
- shell指令碼之if elif寫法指令碼
- nGrinder中快速編寫groovy指令碼01-指令碼結構指令碼
- linux 利用rsync實現檔案增量同步Linux
- rsync實時同步
- rsync 同步目錄
- rsync遠端同步
- Rsync資料同步
- 資料同步rsync
- 從零開始編寫指令碼引擎指令碼