??Lsyncd的配置文件是有效的lua語法,當(dāng)然也支持lua編程,當(dāng)然那是比較高級的用法了后面在簡紹。先介紹基礎(chǔ)的配置。
??Lsyncd的配置主要分兩種:全局配置和局部配置
??由 settings { } 包括的內(nèi)容都屬全局配置,例如:

image.png
??settiings 是lsyncd的內(nèi)置函數(shù),{ }中的內(nèi)容是傳遞的參數(shù)。是lua中函數(shù)的一種調(diào)用方式的簡寫,全寫是這樣:settings({a=1, b=2})

image.png
1. pidfile
文件記錄lsyncd當(dāng)前進(jìn)程id值,
如果沒有pid文件,那么則可以啟動(dòng)多個(gè)lsyncd進(jìn)程,
這會(huì)導(dǎo)致多個(gè)lsyncd進(jìn)程同時(shí)運(yùn)行造成同步的數(shù)據(jù)混亂。
如果設(shè)置了pid文件,同時(shí)只能啟動(dòng)一個(gè)lsyncd進(jìn)程。
避免多個(gè)lsyncd進(jìn)程導(dǎo)致同步混亂的情況,pid文件一定要設(shè)置。
2. inotifyMode
指定lsyncd監(jiān)控的事件,其值有:CloseWrite, Modify, CloseWrite or Modify
默認(rèn)是CloseWrite。
官方文檔寫的是 inotify事件,其實(shí)是不對的
lsyncd事件是對inotify事件的包裝,CloseWrite事件是lsyncd的事件。
我一直以為CloseWrite監(jiān)聽的是 文件寫入關(guān)閉事件,
可為什么文件刪除和創(chuàng)建也被lsyncd監(jiān)聽并同步了呢?
其實(shí)CloseWrite事件并不是單一事件而是包含了很多inotify事件,如下:
CloseWrite包含了以下inotify事件:
IN_ATTRIB 文件屬性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE 可寫文件被 關(guān)閉
IN_CREATE創(chuàng)建新文件
IN_DELETE文件/目錄已在監(jiān)控目錄中刪除
IN_DELETE_SELF 監(jiān)控的項(xiàng)目本身已刪除
IN_MOVED_FROM 文件被移出監(jiān)控目錄,如 mv
IN_MOVED_TO 文件被移動(dòng)到監(jiān)控目錄,如 mv、cp
IN_DONT_FOLLOW 不追蹤符號鏈接的真實(shí)路徑
IN_ONLYDIR; 僅監(jiān)視目錄
Modify是在CloseWrite的基礎(chǔ)上增加了IN_MODIFY事件,并刪除了IN_CLOSE_WRITE事件
IN_MODIFY 文件已被修改
CloseWrite or Modify 是在CloseWrite的基礎(chǔ)上增加了IN_MODIFY事件
3. Insist
默認(rèn)情況下,當(dāng)啟動(dòng)lsyncd失敗時(shí),Lsyncd會(huì)結(jié)束允許并顯示一條錯(cuò)誤消息。
開啟了容錯(cuò)模式以后,lsyncd并不會(huì)因?yàn)槟硞€(gè)配置的錯(cuò)誤導(dǎo)致啟動(dòng)失敗,
而是記錄錯(cuò)誤日志并忽略錯(cuò)誤配置繼續(xù)允許。
4. maxProcesses
lsyncd會(huì)產(chǎn)生一個(gè)子進(jìn)程去運(yùn)行sync任務(wù),
多個(gè)sync的時(shí)候,lsyncd會(huì)產(chǎn)生多個(gè)子進(jìn)程并發(fā)運(yùn)行sync任務(wù),
但最多不會(huì)超過maxProcesses的值。
5. maxDelays
累計(jì)到多少所監(jiān)控的事件激活一次同步,即使后面的sync配置的delay延遲時(shí)間還未到
??好了,全局配置介紹完了,我們寫一個(gè)配置文件簡單測試一下。Lsyncd的默認(rèn)配置文件是 /etc/lsyncd.conf,編輯這個(gè)文件寫我們的配置
image.png
--表示lua中的注釋
sync同步配置
default.direct :本地目錄間同步,使用cp、rm等命令完成差異文件備份
source 同步的源目錄,使用絕對路徑
target 目標(biāo)目錄, 使用絕對路徑
創(chuàng)建源目錄,并啟動(dòng)lsyncd
image.png
日志模式設(shè)置為all,不然日志輸出內(nèi)容不全。
啟動(dòng)成功, 在源目錄中創(chuàng)建文件,看看會(huì)不會(huì)同步到目標(biāo)目錄中

image.png

image.png
??可以看到 監(jiān)聽了文件創(chuàng)建事件, 文件屬性事件,文件修改事件,這也證明了CloseWrite事件并不是單一事件,而是包含了很多inotify事件
??下期我們講解 lsyncd中最重要的配置 sync同步配置。
個(gè)人用戶或小企業(yè)用戶,建站后沒有運(yùn)維怎么辦?
旗魚云梯, 專業(yè)的SAAS化服務(wù)器集群管理云平臺, 免費(fèi)的運(yùn)維服務(wù)專業(yè)的技術(shù), 您值得的擁有.
by 旗魚云梯