lsyncd + rsync 實時同步海量小文件


一: 基於epel源安裝lsyncd 和 rsync

環境准備

1. lsyncd端: 需要進行實時同步的 rsync 客戶端機器 IP地址: 192.168.227.128

2. RsyncServer端: 需要同步數據到此端的機器IP地址: 192.168.227.129

 

默認關閉selinux以及防火牆

 

Lysncd 實際上是lua語言封裝了 inotify 和 rsync 工具

lsyncd的官方地址:https://github.com/axkibe/lsyncd

安裝:

shell > yum install epel-release
shell > yum install lsyncd rsync

關於基於各種服務器的相關配置文檔,安裝之后的路徑是:/usr/share/doc/lsyncd/examples,示例文檔都再此目錄下。

 
         

settings {
    logfile ="/var/log/lsyncd.log",
    statusFile ="/var/log/lsyncd.status",
    inotifyMode = "CloseWrite or Modify",
    maxProcesses = 10,
    statusInterval = 10,
    nodaemon = false,
    maxDelays = 20
}


sync {
    default.rsync,
    source = "/data/",
    target = "rsyncuser@192.168.227.129::fastdfsback",
    delete="true",
    exclude = { "logs*" },
    delay = 10,
    rsync = {
      bwlimit=200,
      binary = "/usr/bin/rsync",
      archive = true,
      compress = true,
      verbose = true,
      perms = true,
      password_file = "/etc/rsync.password",
      _extra = {"--port=3873"}
}
}

 

創建密碼文件

vim /etc/rsync.password    # 創建密碼文件 
123456

chmod 600 /etc/rsync.password # 修改密碼文件權限

啟動服務:

shell > systemctl enable lsyncd && systemctl start lsyncd

二: lsyncd 配置說明

settings 部分,其實就是關於lsyncd工具自身的一些選項設置
   logfile : 指定 lsyncd工具本身運行所產生的日志文件存放位置
 
         
   statusFile : 定義 lsyncd監控目錄狀態文件的存放位置
 
         
   statusInterval : 隔多少秒記錄一次被監控目錄的狀態
 
         
   nodaemon= true : 默認是不啟用守護模式的
 
         
   inotifyMode : 指定要監控的事件,如, CloseWrite,Modify,CloseWrite or Modify
 
         
   maxProcesses : 指定同步時進程的最大個數
 
         
   maxDelays : 當事件被命中累計多少次后才進行一次同步
sync 部分主要用來定義同步時的一些設置,可以同時同步多個目錄,只需要在該代碼塊中事先定義好多個sync即可

default.rsync    : 指定lsyncd運行模式,另外,還有default.direct,default.rsyncssh模式,個人建議缺省
source        : 指定要監控的目錄,務必全部用絕對路徑
target        : 要同步到的目標目錄,一般為rsync服務端模塊下指定的目錄
delay        : 當命中的事件累計到多少時再觸發同步
exclude        : 通過此選項排除掉不需要同步的文件,可用它自己的正則進行匹配
delete        : 和rsync 的 --delete 作用一樣,先清空再同步
下面是關於 rsync 工具自身的一些設置選項

compress    : 壓縮后再同步
bwlimit        : 限速同步,當你不想占滿帶寬時
archive        : 歸檔模式同步
perms        : 保留文件原有屬性同步
_extra = {"--port=873"}  :擴展的一些配置和參數,這里是因為我們內部的服務器使用了不同的rsync端口,也是為了安全考慮吧,當然在執行的時候依然可以將其他的參數放在此配置中
 

其實,lsyncd 還支持當監控到某個指定事件時就執行什么樣的命令,待自己詳讀官方文檔后再做單獨說明,由於是通過時間延遲和累計事件命中次數來觸發同步,在設計上要優於inotify,更多內容,如果有興趣大家可自行參考其官方文檔,待續…

三: RsyncServer端搭建,這里也有人叫客戶端

lsyncd其實是監聽本地目錄的文件變化,然后通過rsync server 將本地文件同步到遠端。以實現備份的目的。

1. 安裝

yum -y install rsync # 安裝

2. 修改配置文件

[root@node2 ~]# cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections=0
log file=/var/log/rsyncd/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock

[fastdfsback]
path = /var/backup/
read only = no
list = yes
auth users = rsyncuser
secrets file = /etc/rsync.password

3. 創建密碼文件

vim /etc/rsync.password # 創建密碼文件
rsyncuser:123456
chmod 600 /etc/rsync.password # 修改密碼文件權限
mkdir /var/log/rsyncd

4. 啟動

/usr/bin/rsync --port=873 --address=192.168.227.129 --daemon

 

四:rsync配置說明

uid #進程對應的用戶
gid #進程對應的用戶組
use chroot #安全相關
max connections #最大連接數 0代表不限制
timeout = 300 #超時時間, 可選
pid file #進程對應的進程號文件
lock file #鎖文件
log file #日志文件
[backup] #模塊名稱
path #服務器提供訪問的目錄
ignore errors #忽略錯誤, 可選
read only = false #可選
list = false #不能列表
hosts allow = 192.168.10.0/24 #允許的ip地址,可選
auth users #虛擬用戶
secrets file #虛擬密碼

接下來,就可以創建數據進行驗證了。

 參考鏈接: 

1. https://www.jianshu.com/p/808d173786c4

2. https://klionsec.github.io/2017/11/18/lsyncd/

3:https://www.cnblogs.com/zxci/p/6243574.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM