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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

rsync+lsyncd实现(本地以及远程)文件实时同步

發(fā)布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rsync+lsyncd实现(本地以及远程)文件实时同步 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
lsyncd基于lua語言開發(fā),整合了rsync和notify?實現(xiàn)文件的實時同步 系統(tǒng)環(huán)境cat?/etc/issue CentOS?release?6.6?(Final)uname?-sr Linux?2.6.32-504.el6.x86_64 服務器規(guī)劃 rsync服務器:???????????????????192.168.10.241 rsync?+?lsyncd服務器?:?????????192.168.10.231 一.配置rsync服務器 1.配置xinetd來管理rsync,并編輯配置文件yum?install?xinetd?-yvim?/etc/xinetd.d/rsync ------------------------------------------------------------------------------------------------------------------------------ service?rsync {disable?=?nosocket_type?????=?streamwait????????????=?nouser????????????=?rootserver??????????=?/usr/bin/rsyncserver_args?????=?--daemonlog_on_failure??+=?USERID } ------------------------------------------------------------------------------------------------------------------------------rpm?-qa?|?grep?rsync rsync-3.0.6-6.el5_11 2.為rsync提供配置文件 全局選項? strict?modes?=yes?是否檢查口令文件的權(quán)限? port?=?873默認端口873? log?file?=?/var/log/rsyncd.log 日志記錄文件? pid?file?=?/var/run/rsyncd.pid運行進程的ID寫到哪里? [home] path?=?/opt/這里是認證的模塊名,在client端需要指定? max?connections?=?0客戶端最大連接數(shù),默認0(沒限制)? uid?=?root指定該模塊傳輸文件時守護進程應該具有的uid? gid?=?root指定該模塊傳輸文件時守護進程應該具有的gid? ignore?errors可以忽略一些無關(guān)的IO錯誤? read?only?=?nono客戶端可上傳文件,yes只讀? write?only?=?nono客戶端可下載文件,yes不能下載? hosts?allow?=?*?充許任何主機連接? hosts?deny?=?10.5.3.1禁止指定的主機連接? auth?users?=?root認證的用戶名,如果沒有這行,則表明是匿名? secrets?file?=?/etc/backserver.pas指定認證口令文件位置? ------------------------------------------------------------------------------------------------------------------------------ 3.添加認證文件,并將權(quán)限修改為600#?echo?"root:123456"?>?/etc/backserver.pas#?chmod?600??/etc/backserver.pasll?/etc/backserver.pas -rw-------?1?root?root?11?Jul?27?15:22?/etc/backserver.pas?4.啟動rsync服務端#?/etc/init.d/xinetd?start Starting?xinetd:???????????????????????????????????????????[??OK??] [root@localhost?~]#?netstat?-ntl?|?grep?873 tcp????????0??????0?0.0.0.0:873?????????????????0.0.0.0:*???????????????????LISTEN 二.客戶端配置lsyncd,基于lsyncd實現(xiàn)實時同步(延遲比較小) 1.1安裝lsyncdyum?search?lsyncd?(源服務器安裝)?如果找不到這個包,只能說明你沒有安裝centos的YUM擴展包,必須先安裝擴展包rpm?-ivh? 完成擴展包的安裝之后,就可以安裝lsyncd了yum?install?lsyncd?-y 1.2編譯安裝lsyncdyum?install?lua?lua-devel?-ywget?-c?tar?xf?release-2.1.5cd?lsyncd-2.1.5./configuremake?&&?make?install 2.提啟動腳本vim?/etc/init.d/lsyncd ------------------------------------------------------------------------------------------------------------------------------ #!/bin/bash # #?chkconfig:?-?85?15 #?description:?Lightweight?inotify?based?sync?daemon .?/etc/init.d/functions .?/etc/sysconfig/network [?"$NETWORKING"?=?"no"?]?&&?exit?0 LSYNCD_OPTIONS="-pidfile?/var/run/lsyncd.pid?/etc/lsyncd.conf" RETVAL=0 prog="lsyncd" thelock=/var/lock/subsys/lsyncd start()?{[?-f?/etc/lsyncd.conf?]?||?exit?6echo?-n?$"Starting?$prog:?"if?[?$UID?-ne?0?];?thenRETVAL=1failureelsedaemon?/usr/local/bin/lsyncd?$LSYNCD_OPTIONSRETVAL=$?[?$RETVAL?-eq?0?]?&&?touch?$thelockfi;echoreturn?$RETVAL } stop()?{echo?-n?$"Stopping?$prog:?"if?[?$UID?-ne?0?];?thenRETVAL=1failureelsekillproc?lsyncdRETVAL=$?[?$RETVAL?-eq?0?]?&&?rm?-f?$thelockfi;echoreturn?$RETVAL } reload(){echo?-n?$"Reloading?$prog:?"killproc?lsyncd?-HUPRETVAL=$?echoreturn?$RETVAL } restart(){stopstart } condrestart(){[?-e?$thelock?]?&&?restartreturn?0 } case?"$1"?instart)start;;stop)stop;;restart)restart;;reload)reload;;condrestart)condrestart;;status)status?lsyncdRETVAL=$?;;*)echo?$"Usage:?$0?{start|stop|status|restart|condrestart|reload}"RETVAL=1 esac exit?$RETVAL ------------------------------------------------------------------------------------------------------------------------------ 3.編輯rsync客戶端,提供添加密碼文件,并將權(quán)限修改為600echo?"123456"?>?/etc/backserver.paschmod?600?/etc/backserver.pasll?/etc/backserver.pas -rw-------?1?root?root?7?Jul?27?15:34?/etc/backserver.pas 4.編輯lsyncd配置文件vim?/etc/lsyncd.conf ------------------------------------------------------------------------------------------------------------------------------ settings?{logfile????=?"/tmp/lsyncd.log",statusFile?=?"/tmp/lsyncd.status",statusInterval?=?5,nodaemon?=?true,}本地同步 1.1?本地目錄同步:direct:cp/rm/mv。?適用:500+萬文件,變動不大 sync?{default.direct,source????=?"/opt/src",target????=?"/opt/dest",delay?=?1,maxProcesses?=?1,} 1.2?本地目錄同步rsync模式:rsync sync{default.rsync,source?=?"/opt/",target?=?"/home/mogilefs/",delete?=?true,exclude={?"test"?},rsync?=?{compress?=?true,verbose?=?true,archive??=?true,} } 遠程同步 2.1?遠程同步:?rsync模式?+?rsyncd?daemon sync?{default.rsync,source????=?"/opt/back3/",target????=?"root@192.168.10.231::home",delete?=?true,exclude?=?{?".tmp"?},delay?=?1,rsync?=?{binary?=?"/usr/bin/rsync",archive?=?true,compress?=?true,verbose??=?true,password_file?=?"/etc/backserver.pas",_extra????=?{"--bwlimit=200"},}}2.2?遠程目錄同步:rsync模式?+?ssh?shell sync{default.rsync,source?=?"/opt/back/",target?=?"root@192.168.10.241:/opt",delete?=?true,--?exclude={?"test"?},rsync?=?{binary?=?"/usr/bin/rsync",compress?=?true,verbose?=?true,archive?=?true,rsh?=?"/usr/bin/ssh?-p?22?-o?StrictHostKeyChecking=no"} }3?遠程目錄同步:rsync模式?+?rsyncssh,效果與上面相同 sync?{default.rsyncssh,source????=?"/opt/back2/",host??????=?"192.168.10.241",targetdir?=?"/opt/", --??excludeFrom?=?"/etc/rsyncd.d/rsync_exclude.lst",maxDelays?=?1,delay?=?1,rsync?=?{binary?=?"/usr/bin/rsync",archive?=?true,compress?=?true,verbose???=?true,_extra?=?{"--bwlimit=2000"},},ssh??=?{port??=??22}} ------------------------------------------------------------------------------------------------------------------------------ 5.免密鑰登陸(基于ssh同步需要在遠端被同步的服務器上開啟ssh無密碼登錄)ssh-copy-id?-i??~/.ssh/id_rsa.pub?root@192.168.10.2416.啟動rlsyncd服務/etc/init.d/lsyncd?start 7.lsyncd的日志文件以及狀態(tài)文件tailf?/tmp/lsyncd.log? Tue?Jul?28?12:12:15?2015?Normal:?recursive?startup?rsync:?/opt/back3/?->?root@192.168.10.241::home/ Tue?Jul?28?12:12:19?2015?Normal:?Startup?of?"/opt/back3/"?finished. Tue?Jul?28?12:13:07?2015?Normal:?recursive?startup?rsync:?/opt/back3/?->?root@192.168.10.241::home/ Tue?Jul?28?12:13:12?2015?Error:?Temporary?or?permanent?failure?on?startup?of?"/opt/back3/".?Terminating?since?"insist"?is?not?set. Tue?Jul?28?12:13:14?2015?Normal:?recursive?startup?rsync:?/opt/back3/?->?root@192.168.10.241::home/ Tue?Jul?28?12:13:18?2015?Error:?Temporary?or?permanent?failure?on?startup?of?"/opt/back3/".?Terminating?since?"insist"?is?not?set. Tue?Jul?28?12:13:35?2015?Normal:?recursive?startup?rsync:?/opt/back3/?->?root@192.168.10.241::home/ Tue?Jul?28?12:13:38?2015?Normal:?Startup?of?"/opt/back3/"?finished. Tue?Jul?28?12:15:50?2015?Normal:?recursive?startup?rsync:?/opt/back3/?->?root@192.168.10.241::home/ Tue?Jul?28?12:15:53?2015?Normal:?Startup?of?"/opt/back3/"?finished. tailf?/tmp/lsyncd.status Sync1?source=/opt/back3/ There?are?1?delays active?Init? Excluding:nothing. Inotify?watching?1?directories1:?/opt/back3/


lsyncd.conf 主要配置選項說明:

settings配置段:
??? 全局設(shè)置,--開頭表示注釋,下面是幾個常用選項說明:
??? logfile 定義日志文件
??? stausFile 定義狀態(tài)文件
??? nodaemon=true 表示不啟用守護模式,默認
??? statusInterval 將lsyncd的狀態(tài)寫入上面的statusFile的間隔,默認10秒
??? inotifyMode 指定inotify監(jiān)控的事件,默認是CloseWrite,還可以是Modify或CloseWrite or Modify
??? maxProcesses 同步進程的最大個數(shù)。假如同時有20個文件需要同步,而maxProcesses = 8,則最大能看到有8個rysnc進程
??? maxDelays 累計到多少所監(jiān)控的事件激活一次同步,即使后面的delay延遲時間還未到

?? ?
sync配置段:
?? ?定義同步參數(shù),可以繼續(xù)使用maxDelays來重寫settings的全局變量。
?? ?一般第一個參數(shù)指定lsyncd以什么模式運行:rsync、rsyncssh、direct三種模式:
??? default.rsync :本地目錄間同步,使用rsync,也可以達到使用ssh形式的遠程rsync效果,或daemon方式連接遠程rsyncd進程;
??? default.direct :本地目錄間同步,使用cp、rm等命令完成差異文件備份;
??? default.rsyncssh :同步到遠程主機目錄,rsync的ssh模式,需要使用key來認證
??? source 同步的源目錄,使用絕對路徑。
??? target 定義目的地址.
??? 三種模式的示例會在后面給出。
??? init 這是一個優(yōu)化選項,當init = false,只同步進程啟動以后發(fā)生改動事件的文件,原有的目錄即使有差異也不會同步。默認是true
???? delay 累計事件,等待rsync同步延時時間,默認15秒(最大累計到1000個不可合并的事件)。也就是15s內(nèi)監(jiān)控目錄下發(fā)生的改動,會累積到一次rsync同步,避免過于頻繁的同步。(可合并的意思是,15s內(nèi)兩次修改了同一文件,最后只同步最新的文件)
??? excludeFrom 排除選項,后面指定排除的列表文件,如果是簡單的排除,可以使用exclude = {"FILENAME"}。
??? 這里的排除規(guī)則寫法與原生rsync有點不同,更為簡單:
?? ?監(jiān)控路徑里的任何部分匹配到一個文本,都會被排除,例如/var/web/test可以匹配規(guī)則web
?? ?如果規(guī)則以斜線/開頭,則從頭開始要匹配全部
?? ?如果規(guī)則以/結(jié)尾,則要匹配監(jiān)控路徑的末尾
?? ??匹配任何字符,但不包括/
?? ?*匹配0或多個字符,但不包括/
?? ?**匹配0或多個字符,可以是/
??? delete 為了保持target與souce完全同步,Lsyncd默認會delete = true來允許同步刪除。它除了false,還有startup、running值.
?? ?rsync:(提示一下,delete和exclude本來都是rsync的選項,上面是配置在sync中的,我想這樣做的原因是為了減少rsync的開銷)
??? bwlimit 限速,單位kb/s,與rsync相同(這么重要的選項在文檔里竟然沒有標出)
??? compress 壓縮傳輸默認為true。在帶寬與cpu負載之間權(quán)衡,本地目錄同步可以考慮把它設(shè)為false
??? perms 默認保留文件權(quán)限。

其它rsync的選項
其它還有rsyncssh模式獨有的配置項,如host、targetdir、rsync_path、password_file。
lsyncd.conf可以有多個sync,各自的source,各自的target,各自的模式,互不影響。

使用命令加載配置文件,啟動守護進程,自動同步目錄操作。
lsyncd -log Exec /usr/local/lsyncd-2.1.5/etc/lsyncd.conf

注意: 1.lsyncd?Version:?2.1.4版本以前?存在bug,不支持rsync的?password_file參數(shù),?lsyncd?Version:?2.1.5已經(jīng)修復,并且允許rsync客戶端具有寫權(quán)限。 2.rsyncOps={"-avz","--delete"}這樣的寫法在2.1.*版本已經(jīng)不支持。

轉(zhuǎn)載于:https://blog.51cto.com/openlinuxfly/1679279

總結(jié)

以上是生活随笔為你收集整理的rsync+lsyncd实现(本地以及远程)文件实时同步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。