https://github.com/axkibe/lsyncd
lsyncd会密切监测本地服务器上的参照目录,当发现目录下有文件或目录变更后,立刻通知远程服务器,并通过rsync 或rsync+ssh方式实现文件同步。这样做的好处就是,你可以利用Lsyncd搭建一个VPS同步镜像,应用场景例如CDN镜像、网站数据备份、网站搬家等等。
安装lsyncd依赖包
yum install lua lua-devel pkgconfig gcc asciidoc
从github上下载lsyncd-master.zip 的2.1.5版本使用的是 cmake 编译工具,无法./configure:
# uzip lsyncd-master.zip
# cd lsyncd-master
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd
# make && make install
我这个版本编译时有个小bug,如果按照INSTALL在build目录中make,会提示:
[100%] Generating doc/lsyncd.1Updating the manpage
a2x: failed: source file not found: doc/lsyncd.1.txtmake[2]: *** [doc/lsyncd.1] Error 1make[1]: *** [CMakeFiles/manpage.dir/all] Error 2make: *** [all] Error 2
解决办法是要么直接在解压目录下cmake,不要mkdir build,要么在CMakeList.txt中搜索doc字符串,在前面加上${PROJECT_SOURCE_DIR}。
# cd /usr/local/lsyncd
# mkdir etc var
# vi etc/lsyncd.conf
sync {
default.rsyncssh,
source = "/data/site/*",
host = "45.76.97.245",
targetdir = "/data/site/vip",
-- maxDelays = 5,
delay = 3600,
-- init = false,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
_extra = {"--bwlimit=2000"},
},
ssh = {
port = 55555
}
}
sync {
default.rsyncssh,
source = "/data/backup/*",
host = "45.76.97.245",
targetdir = "/data/backup",
-- maxDelays = 5,
delay = 604800,
-- init = false,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
_extra = {"--bwlimit=2000"},
},
ssh = {
port = 55555
}
}
设置环境变量:ln -s /usr/local/lsyncd/bin/lsyncd /usr/local/bin/lsyncd
使用命令加载配置文件,启动守护进程,自动同步目录操作:
lsyncd -log Exec /usr/local/lsyncd/etc/lsyncd.conf
参考网址: http://www.vpsdx.com/3575.html