inotify + rsync inotify过于灵敏,对文件的中间状态也会触发rsync操作;当存在大量碎文件时,rsync的对比列表将会十分庞大。
sersync 未测试

lsyncd https://github.com/axkibe/lsyncd https://code.google.com/archive/p/lsyncd/downloads
通过时间延迟、累计触发事件次数来减少inotify触发;支持多种传输模式。

yum install -y lua lua-devel
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/lsyncd/lsyncd-2.1.5.tar.gz
tar zxvf lsyncd-2.1.5.tar.gz
cd lsyncd-2.1.5
make && make install
[root@db lsyncd-2.1.5]# which lsyncd
/usr/local/bin/lsyncd

github用cmake

# uzip lsyncd-master.zip
# cd lsyncd-master
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd-2.1.5
# make && make install

核心代码:lsyncd -rsyncssh /data/ root@ip /data/

优点:Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。我认为它最令人称道的特性是,完美解决了 inotify + rsync海量文件同步带来的文件频繁发送文件列表的问题 —— 通过时间延迟或累计触发事件次数实现。另外,它的配置方式很简单,lua本身就是一种配置语言,可读性非常强。lsyncd也有多种工作模式可以选择,本地目录cp,本地目录rsync,远程目录rsyncssh。

yum install lua lua-devel
#cd lsyncd
#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd
#make && make install
#ln -s /usr/local/lsyncd/bin/lsyncd /usr/sbin/

或直接:yum -y install lsyncd 安装
启动
调试模式:
#lsyncd -nodaemon -rsyncssh /data/ root@ip /data/
正式模式
#lsyncd -rsyncssh /data/ root@ip /data/
#参考的文档
https://github.com/axkibe/lsyncd/wiki
http://www.tuicool.com/articles/VBzmm2
https://code.google.com/archive/p/lsyncd/downloads
注:两台机器或多台机器,保证rsync版本为3.1.x以上,否则会报错:rsync : on remote machine: --delete-missing-args: unknown option

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code