lsync目錄文件實時同步工具
阿新 • • 發佈:2018-10-08
logs 它的 使用 eat oda ive 丟失 targe 文件實時同
參考文檔:https://vastxiao.github.io/article/2017/09/02/Linux/lsyncd_usage/
防止連接丟失,已保存至百度網絡-鄭州-XXXXX
建議首先查看 參考文檔連接,寫的比較全了
1、簡介
lsync 官網:https://axkibe.github.io/lsyncd/ Lysncd 實際上是lua語言封裝了inotify和rsync工具,采用了Linux內核(2.6.13及以後)裏的inotify觸發機制,然後通過rsync去差異同步,達到實時的效果。 最亮的特性:完美解決了inotify+rsync海量文件同步帶來的文件頻繁發送文件列表的問題 —— 通過時間延遲或累計觸發事件次數實現。 它的配置方式很簡單,lua本身就是一種配置語言,可讀性非常強。 lsyncd也有多種工作模式可以選擇,本地目錄cp,本地目錄rsync,遠程目錄rsyncssh。 實現簡單高效的本地目錄同步備份(網絡存儲掛載也當作本地目錄),一個命令搞定。
2、安裝
# yum安裝需要epel源 # 阿裏epel源地址:http://mirrors.aliyun.com/help/epel yum install lsyncd
源碼安裝: yum install -y lua cmake rsync VERSION=2.1.5 wget -O lsyncd-release-${VERSION?err}.tar.gz https://github.com/axkibe/lsyncd/archive/release-${VERSION?err}.tar.gz tar -zxvf lsyncd-release-${VERSION?err}.tar.gz cd lsyncd-release-${VERSION?err} cmake . make sudo make install
3、yum安裝文件結構
路徑 說明 /etc/lsyncd.conf 主配置文件 /etc/sysconfig/lsyncd init環境變量和啟動選項配置文件 /etc/logrotate.d/lsyncd 日誌滾動配置文件 /usr/share/doc/lsyncd-*/examples/ 目錄下有lsyncd.conf配置例子 /etc/init.d/lsyncd lsyncd的init啟動腳本/usr/bin/lsyncd lsyncd命令路徑 /var/run/lsyncd/ 可放lsyncd.pid的目錄 /var/log/lsyncd/ 默認的日誌目錄
4、文件配置
lsyncd的一個配置文件總體分類: settings(global):settings是全局進程設置。 sync(layer 4):sync裏面是定義同步參數,可以有多個sync,各自的sync配置,互不影響。 onAction(layer 3): 用於定義sync觸發的事件動作,定義後的Action應用到sync配置下。 (例如監控某個目錄下的文件,根據觸發的事件自己定義要執行的命令。) AdvancedonAction(layer 2):自定義事件模型,定義後可應用到layer3和layer4。 Inlets(layer 1):自定義事件函數,一般在自定義事件模型(layer 2)中使用自定義事件函數。 註釋:–開頭表示註釋
[root@zz ~]# cat /etc/lsync.conf ---- -- User configuration file for lsyncd. -- -- Simple example for default rsync, but executing moves through on the target. -- -- For more examples, see /usr/share/doc/lsyncd*/examples/ -- settings { --pidfile = "/var/run/lsyncd/lsyncd.pid" --nodaemon = false, inotifyMode = "CloseWrite", maxProcesses = 8, statusFile ="/tmp/lsyncd.status", statusInterval = 10, logfile = "/var/log/lsyncd/lsyncd.log" } -- # 監測本地目錄發生變化就用touch更新一下mtime時間。 flushModifyTime = { delay = 10, maxProcesses = 10, onCreate = "touch ^sourcePathname", onModify = "touch ^sourcePathname", } sync { default.rsync, source = "/opt/share", target = "[email protected]::beian", delete = "running", -- exclude = { "logs" }, delay = 10, init = false, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, password_file = "/etc/rsyncd.d/rsync.pwd", _extra = { "--bwlimit=200" } } } ----------------------------------------------------------------------- 啟動: lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd.conf
一個真實的例子:本地目錄備份
[root@tomcat2 ~]# cat /etc/lsyncd.conf settings { --pidfile = "/var/run/lsyncd/lsyncd.pid", --nodaemon = false, inotifyMode = "CloseWrite", maxProcesses = 8, statusFile = "/tmp/lsyncd.status", statusInterval = 10, logfile = "/var/log/lsyncd/lsyncd.log" } sync { default.rsync, source = "/opt/webapplication", target = "/back_up/webapplication", delete = "false", --exclude = { "logs" }, delay = 5, init = false, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, bwlimit = 2000 } } sync { default.rsync, source = "/data", target = "/back_up/data", delete = "false", --exclude = { "logs" }, delay = 5, init = false, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, bwlimit = 2000 } } [root@tomcat2 ~]#
lsync目錄文件實時同步工具