日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rsync+inotify的实现

發布時間:2025/7/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rsync+inotify的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:rsync簡介:

rsync是一個強大的數據同步工具,它具有cp,scp的大部分功能,并在此基礎上進行擴展,它可以自動比較兩個文件的差異實現同步功能。它還可以實現異地同步,對實現目錄同步非常方便。

二:rsync的工作模式:

  • shell模式,也稱為本地模式

  • 遠程shell模式,可以利用ssh協議承載其遠程傳輸過程;

  • 列表模式,僅列出源中的內容,-nv

  • 服務模式,此時rsync工作為守護進程,能接收客戶端的數據同步請求

  • 三:rsync可用命令選項:

    -a:歸檔保留原文件的屬性?

    -p:保留原文件的權限

    -t:保留文件的時間戳

    -l:保留文件的符號鏈接

    -g:保留文件的數組

    -o:保留文件的屬主

    -D:保留設備文件

    -n:同步測試不執行

    -v:詳細輸出模式

    -q:靜默模式

    -c:開啟校驗功能

    -r:遞歸復制

    -e ssh:使用ssh作為傳輸承載

    -z:壓縮后傳輸

    --progress:顯示進度條

    --stats:顯示如何執行壓縮和傳輸

    注意:rsync命令中,如果原路徑是目錄,且給復制路徑時末尾有/,則會復制目錄中的內容,而非目錄本身,如果末尾沒有/,則會同步目錄本身及目錄中的所有文件;目標路徑末尾是否有/無關緊要;

    四:rsync的服務模式的實現:

    ?由于rsync工作屬于瞬時進程,因此要有xinetd代為監聽,我們就要安裝xinetd并開啟

  • 設定rsync服務器端 A 主機(172.16.249.220):yum -y install xinetd,chkconfig rsync on

  • 為rsync提供配置文件 /etc/rsyncd.conf

    我們可以使用rpm -ql rsync 查看都生了哪些文件

    這里有一個實例配置文件 我們可以參考這個文件寫如下。


    啟動服務:service xinetd start 監聽與873/tcp


  • #?Global?Settings?????#?全局模式下 uid?=?nobody??????????#?用戶身份 gid?=?nobody?? use?chroot?=?no???????#?不使用chroot功能 max?connections?=?10??#?允許最大連接數量 strict?modes?=?yes????#?是否使用嚴格查詢模型 pid?file?=?/var/run/rsyncd.pid?#?指出pid文件 log?file?=?/var/log/rsyncd.log?#?指出日志文件#?Directory?to?be?synced??#允許同步的目錄權限設置 [tools]???????????????????#對外聲稱同步的名字? path?=?/data??????????????#允許同步的目錄的位置 ignore?errors?=?yes???????#?忽略錯誤繼續同步 read?only?=?no????????? write?only?=?no??????????? hosts?allow?=?172.16.0.0/16?#允許該網段內的主機同步 hosts?deny?=?*?#拒絕所有?先匹配allow list?=?false?|?ture????#是否允許列出文件 uid?=?root??#使用root同步 gid?=?root

    此時我們可以用B主機172.16.249.218做測試如下:


  • 服務端啟用用戶認證的功能

    我們需要修改配置文如下:

  • #Directory?to?be?synced[tools]path?=?/dataignore?errors?=?yesread?only?=?nowrite?only?=nohosts?allow?=?172.16.0.0/16hosts?deny?=?*list?=?yesuid?=?rootgid?=?rootauth?users?=?tomsecrets?file?=?/etc/rsyncd.passwd

    注意:我們只需加上最后兩行,但是我們在創建/etc/rsyncd.passwd 這個文件后要給以600或者400的權限,否則默認不能使用用戶認證功能。

    密碼文件的格式如下:username:passwd 密碼不能超過8位

    5.結合inotify實現監控服務器端數據變化。

    ?1.首先下載inotify-tools 工具

    ?2.先用uname -r 查看是內核版本

    [root@guzenghui?rc.d]#?uname?-r 2.6.32-431.el6.x86_64 [root@guzenghui?rc.d]#?ll?/proc/sys/fs/inotify/ total?0 -rw-r--r--?1?root?root?0?Aug?25?02:25?max_queued_events -rw-r--r--?1?root?root?0?Aug?25?02:25?max_user_instances -rw-r--r--?1?root?root?0?Aug?25?02:25?max_user_watches

    顯示以上信息表示可以使用inotify工具

    6.在客戶端上為inotify提供腳本使其監控客戶端數據是否發生變化,若是發生變化就通知服務器來同步數據腳本內容如下:

    1?#/bin/bash2?src=/tmp3?des=tools4?ip=172.16.249.2205?6?/usr/local/bin/inotifywait?-mrq?--timefmt?'%d/%m/%y/%H:%M'?--format?'%T%w%f'?????-e?modify,delete,create,attrib?$src?|?while?read?file7???do8??????rsync?-vzrtopg?--delete?--progress?$src?tom@$ip::$des?--password-file=/etc/rsyncd.passwd?&&echo?"$src?has?been?resynced"9?done

    其中:src表示客戶端要同步給服務端的目錄,des表示服務器存放同步數據的位置

    此時我們就可以在客戶端上修改/tmp目錄下的內容,就可以看到服務器端同步到數據

    我們在測試的不讓腳本在后臺運行,此時我們就可以清楚的看到數據同步過程。

    7.給其權限 chmod +x /etc/rc.d/inotify ?將腳本放到/etc/rc.d/inotify下開機自啟動.

    五:總結

    ? 將客戶端也保存一份inotify.passwd 這樣就不用每次輸入密碼了,權限也要改成600,內容不能加

    用戶名只存放密碼。 ??

    轉載于:https://blog.51cto.com/germanygu/1544183

    總結

    以上是生活随笔為你收集整理的rsync+inotify的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。