国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

linux中使用rsync+inotify-tools+ssh文件實(shí)時(shí)同步

2024-08-27 23:59:04
字體:
供稿:網(wǎng)友

下面我們來看一篇linux中使用rsync+inotify-tools+ssh文件實(shí)時(shí)同步的例子,這個(gè)對于很多大站的朋友都是這樣操作的,下面一起來看看吧.

在某些服務(wù)器架構(gòu)中,會(huì)遇到文件同步問題,例如需要做站點(diǎn)鏡像備份,同步文件到多個(gè)CDN節(jié)點(diǎn)等,需要解決的主要有兩個(gè)問題.

1.如何實(shí)現(xiàn)文件同步問題? 2.何時(shí)執(zhí)行同步操作?

文件同步可以使用rsync+ssh,什么時(shí)候自行同步操作呢?可能部分人會(huì)想到cron,這個(gè)沒錯(cuò),可以實(shí)現(xiàn)的,但是確實(shí)有點(diǎn)浪費(fèi)資源,因?yàn)閏ron并不知道文件是否被修改過,只是不停的周期性的執(zhí)行,如果文件修改后再執(zhí)行同步操作,不修改就不執(zhí)行那應(yīng)該比較好,其實(shí)inotify就可以做到,只要你的服務(wù)器不是古董級別的,就支持inotify,來幾句沒用的話:

Inotify 是一個(gè) Linux特性,它監(jiān)控文件系統(tǒng),并且及時(shí)向?qū)iT的應(yīng)用程序發(fā)出相關(guān)的事件警告,比如刪除、讀、寫和卸載操作等。Inotify 反應(yīng)靈敏,用法非常簡單,并且比 cron 任務(wù)的繁忙輪詢高效得多。

假設(shè)某服務(wù)器架構(gòu)中有兩臺(tái)web服務(wù)器(IP為192.168.1.252和192.168.1.254),一臺(tái)代碼更新發(fā)布服務(wù)器(IP為192.168.1.251),需要同步的目錄是/data/www/.

rsync文件同步,下面介紹一下安裝步驟:

在代碼發(fā)布服務(wù)器(192.168.1.251)上安裝inotify,執(zhí)行如下命令.

  1. tar xzvf inotify-tools-3.14.tar.gz 
  2. cd inotify-tools-3.14 
  3. ./configure 
  4. make 
  5. make install 
  6. cd .. 

在所有服務(wù)器上(代碼發(fā)布服務(wù)器和需要同步的服務(wù)器)上安裝rsync,命令如下:

  1. tar zxvf rsync-3.0.9.tar.gz 
  2. cd rsync-3.0.9 
  3. ./configure 
  4. make 
  5. make install 

以上命令在每臺(tái)服務(wù)器上都需要執(zhí)行,在代碼發(fā)布服務(wù)器與需要同步的服務(wù)器之間配置ssh key信任,在代碼發(fā)布服務(wù)器上生成公鑰和私鑰.

ssh-keygen -t rsa

直接三次回車,將公鑰添加到各個(gè)需要更新的主機(jī)authorized_keys 文件中,在代碼更新服務(wù)器上再執(zhí)行.

  1. ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.252 
  2. ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.254 

如果有提示 輸入yes,按提示輸入密碼回車,然后兩臺(tái)需要web服務(wù)器(192.168.1.252和192.168.1.254)重啟ssh.

service sshd restart

在代碼發(fā)布服務(wù)器上以root身份創(chuàng)建inotify_rsync.sh腳本vi /root/inotify_rsync.sh 輸入.

  1. #!/bin/sh 
  2. SRC=/data/www/    #代碼發(fā)布服務(wù)器目錄 
  3. DST=/data/www/    #目標(biāo)服務(wù)器目錄 
  4. IP="192.168.1.252 192.168.1.254"    #目標(biāo)服務(wù)器IP,多個(gè)以空格隔開 
  5. USER=root 
  6. /usr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' --exclude "(.swp|.swx|.svn)" \ 
  7. -e create,move,delete,close_write,attrib $SRC | while read files 
  8. do  //Vevb.com 
  9. for i in $IP 
  10. do 
  11.     /usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST 
  12.     echo $files >>/tmp/rsync.log 2>&1  
  13. done 
  14. done 

相關(guān)解釋:

  1. uusr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' --exclude "(.swp|.swx|.svn)" \ 
  2. -e create,move,delete,close_write,attrib $SRC | while read files 

 -m 是保持一直監(jiān)聽

-r 是遞歸查看目錄

-q 是打印出事件

-e create,move,delete,close_write,attrib 是指 “監(jiān)聽 創(chuàng)建 移動(dòng) 刪除 寫入 權(quán)限” 事件.

/usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST

-a 存檔模式

-h 保存硬連接

-q 制止非錯(cuò)誤信息

-z 壓縮文件數(shù)據(jù)后傳輸

-t 維護(hù)修改時(shí)間

-delete 刪除于多余文件

--exclude 排除同步的文件

然后賦予腳本可執(zhí)行權(quán)限:chmod +x /root/inotify_rsync.sh

設(shè)置開機(jī)自啟動(dòng) echo "/root/inotify_rsync.sh &" >> /etc/rc.local

執(zhí)行腳本/root/inotify_rsync.sh &,在代碼更新服務(wù)器的/data/www/目錄中創(chuàng)建文件,測試效果.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蓝田县| 关岭| 恩平市| 建德市| 成武县| 商水县| 卢龙县| 聊城市| 永平县| 呼图壁县| 辽阳县| 宁津县| 获嘉县| 绍兴县| 东乌珠穆沁旗| 大名县| 汶上县| 应城市| 万州区| 阜平县| 成安县| 左权县| 井冈山市| 丹凤县| 保亭| 霍林郭勒市| 石阡县| 瑞丽市| 玉林市| 松潘县| 宁陵县| 安徽省| 镇雄县| 沅陵县| 寿光市| 碌曲县| 渭源县| 霸州市| 八宿县| 焉耆| 灌云县|