基于rsync寫(xiě)腳本實(shí)現(xiàn)多節(jié)點(diǎn)多服務(wù)器文件一鍵同步的方法
集群腳本分發(fā)
在處理 Linux 集群的時(shí)候,常常會(huì)涉及到集群內(nèi)文件的同步。文件數(shù)量多,且需要頻繁同步的情況下,運(yùn)用 一些 Linux 命令能很大程度上的幫助我們節(jié)省時(shí)間和精力。
本文將介紹 scp 和 rsync 兩個(gè)命令
- scp(secure copy) 安全拷貝:可以實(shí)現(xiàn)服務(wù)器與服務(wù)器之間的數(shù)據(jù)拷貝。rsync 遠(yuǎn)程同步工具:主要用于備份和鏡像。具有速度快、避免復(fù)制相同內(nèi)容和支持符號(hào)鏈接的優(yōu)點(diǎn)。
- 區(qū)別:用 rsync 做文件的復(fù)制要比 scp 的速度快,rsync 只對(duì)差異文件做更新。scp 是把所有文件都復(fù)制過(guò)去。
scp
基本語(yǔ)法
scp -r $pdir/$fname $user@$host:$pdir/$fname
scp:命令
-r:遞歸
p d i r / pdir/ pdir/fname:要拷貝的文件路徑/名稱(chēng)
u s e r @ user@ user@host: p d i r / pdir/ pdir/fname:目的地用戶(hù)@主機(jī):目的地路徑/名稱(chēng)
簡(jiǎn)單操作
在 ndmiao 用戶(hù)目錄下,創(chuàng)建一個(gè) test 文件夾, 并創(chuàng)建一些文件。修改 test 文件目錄權(quán)限歸屬為 ndmiao:ndmiao
[ndmiao@centos01 ~]$ sudo chown ndmiao:ndmiao -R test
在 centos01 上將 test 文件目錄拷貝到 centos02 上,回車(chē)后會(huì)提示是否確認(rèn)連接,確認(rèn)連接后輸入 centos02 的密碼即可
[ndmiao@centos01 ~]$ scp -r test ndmiao@centos02:/home/ndmiao/
在 centos02 上將 centos01 中的目錄拷貝到 centos02
[ndmiao@centos01 ~]$ scp -r test ndmiao@centos02:/home/ndmiao/
在 centos02 上將 centos01 上的目錄拷貝到 centos03
[ndmiao@centos02 ~]$ scp -r ndmiao@centos01:/home/ndmiao/test ndmiao@centos03:/home/ndmiao/
rsync
基本語(yǔ)法
rsync -av $pdir/$fname $user@$host:$pdir/$fname
rsync:命令
-a:歸檔拷貝
-v:顯示復(fù)制過(guò)程
p d i r / pdir/ pdir/fname:要拷貝的文件路徑/名稱(chēng)
u s e r @ user@ user@host: p d i r / pdir/ pdir/fname:目的地用戶(hù)@主機(jī):目的地路徑/名稱(chēng)
簡(jiǎn)單操作
同步 centos01 目錄到 centos02
[ndmiao@centos01 ~]$ rsync -av test ndmiao@centos02:/home/ndmiao/
xsync
雖然上面兩個(gè)命令已經(jīng)極大的方便了文件的同步,但是當(dāng)集群中存在著幾十幾百甚至上千服務(wù)器的時(shí)候,就又顯的麻煩了,這時(shí)候就可以編寫(xiě)一個(gè)shell腳本來(lái)實(shí)現(xiàn)集群文件的同步。
需求
能夠一條命令同步目錄至集群所有的節(jié)點(diǎn)
實(shí)現(xiàn)
配置 /etc/hosts ,因?yàn)槟_本需要通過(guò)主機(jī)名來(lái)獲取節(jié)點(diǎn)的地址, 文件中追加節(jié)點(diǎn)地址以及對(duì)應(yīng)的主機(jī)名。配置好之后,需要重啟。
192.168.10.101 centos01
192.168.10.102 centos02
192.168.10.102 centos03
因?yàn)樾枰_本在任何路徑下都能夠使用,所以需要將腳本放置在聲明了全局環(huán)境變量的路徑下面。
[ndmiao@centos01 ~]$ /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ndmiao/.local/bin:/home/ndmiao/bin
于是選擇將 xsync 文件放置在 /home/ndmiao/bin 目錄下
#!/bin/bash #1. 判斷參數(shù)個(gè)數(shù) if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍歷集群所有機(jī)器 for host in centos01 centos02 centos03 do echo ==================== $host ==================== #3. 遍歷所有目錄,挨個(gè)發(fā)送 for file in $@ do #4. 判斷文件是否存在 if [ -e $file ] then #5. 獲取父目錄 pdir=$(cd -P $(dirname $file); pwd) #6. 獲取當(dāng)前文件的名稱(chēng) fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir else echo $file does not exists! fi done done
修改腳本 xsync 的權(quán)限
[ndmiao@centos01 bin]$ chmod 777 xsync
測(cè)試腳本
[ndmiao@centos01 ~]$ xsync /home/ndmiao/bin
運(yùn)行后會(huì)發(fā)現(xiàn)所有節(jié)點(diǎn)的 /home/ndmiao/bin 下都會(huì)出現(xiàn) xsync 腳本
如果想要以 root 的身份來(lái)運(yùn)行
[ndmiao@centos01 ~]$ sudo /home/ndmiao/bin/xsync /home/ndmiao/test
SSH 無(wú)密碼登錄
雖然已經(jīng)配置好了xsync,但是每同步一個(gè)節(jié)點(diǎn)就要輸入一次節(jié)點(diǎn)的密碼,SSH 無(wú)密碼登錄就可以去除這種重復(fù)的操作
免登陸原理
假設(shè)有兩臺(tái)服務(wù)器,一臺(tái)為 centos01,一臺(tái)為 centos02,使用 ssh-key-gen 在 centos01 的 /home/ndmiao/.ssh 會(huì)生成私鑰 id_rsa 和 公鑰 id_rsa.pub。將 centos01 的公鑰拷貝到 centos02 的 authorized_keys 后,當(dāng) centos01 通過(guò) ssh 訪問(wèn) centos02(數(shù)據(jù)用私鑰加密),centos02 會(huì)授權(quán) authorized_keys 中的 centos01 公鑰來(lái)解密私鑰,然后用 centos01 公鑰加密數(shù)據(jù)返還給 centos01,centos01 接受到數(shù)據(jù)后用私鑰來(lái)解密數(shù)據(jù)。
操作步驟
生成公鑰和私鑰
[ndmiao@centos01 ~]$ cd .ssh [ndmiao@centos01 .ssh]$ ssh-keygen -t rsa
將公鑰拷貝到需要免密登錄的目標(biāo)節(jié)點(diǎn),因?yàn)?ssh 訪問(wèn)自身節(jié)點(diǎn)也需要密碼,所以自身也需要拷貝
[ndmiao@centos01 .ssh]$ ssh-copy-id centos01 [ndmiao@centos01 .ssh]$ ssh-copy-id centos02 [ndmiao@centos01 .ssh]$ ssh-copy-id centos03
這時(shí)候就可以通過(guò) centos01 來(lái) ssh 免密訪問(wèn)三臺(tái)節(jié)點(diǎn)了,運(yùn)行 xsync 也不再需要輸入密碼。如果想要其它節(jié)點(diǎn)也能無(wú)密碼訪問(wèn)其它的節(jié)點(diǎn),也需要同樣的配置過(guò)程。因?yàn)?Linux 不同用戶(hù)是隔離的,所以其它用戶(hù)想要無(wú)密碼訪問(wèn)其它節(jié)點(diǎn),也需要同樣操作配置,包括 root 用戶(hù)。
到此這篇關(guān)于利用rsync寫(xiě)腳本實(shí)現(xiàn)多節(jié)點(diǎn)多服務(wù)器文件一鍵同步的文章就介紹到這了,更多相關(guān)rsync多服務(wù)器文件同步內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
值得推薦的Idea十幾大優(yōu)秀插件(小結(jié))
這篇文章主要介紹了值得推薦的Idea十幾大優(yōu)秀插件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-04-04使用Git Hook技術(shù)定義和校驗(yàn)代碼提交模板方式
這篇文章主要介紹了使用Git Hook技術(shù)定義和校驗(yàn)代碼提交模板方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Chrome瀏覽器斷點(diǎn)調(diào)試技巧(非常詳細(xì)!)
在我們?nèi)粘i_(kāi)發(fā)中,常常利用chrome強(qiáng)大的控制臺(tái)Sources下面進(jìn)行代碼斷點(diǎn)調(diào)試,這篇文章主要給大家介紹了關(guān)于Chrome瀏覽器斷點(diǎn)調(diào)試技巧的相關(guān)資料,需要的朋友可以參考下2023-09-09s49?磁盤(pán)存儲(chǔ)文件系統(tǒng)管理詳解
這篇文章主要為大家介紹了s49?磁盤(pán)存儲(chǔ)文件系統(tǒng)管理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11