Lsyncd搭建同步镜像:用Lsyncd实现本地和远程服务器之间实时同步 Linux教程 nginx&apache 数据备份



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,如果按照INSTALLbuild目录中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

签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回