sersync - 数据同步神器

作者: taojy123 | 来源:发表于2020-09-30 15:02 被阅读0次

    sersync 是基于 boost1.43.0 inotify api rsync command 开发的一个服务器同步工具。

    托管在 Google Code 上的项目地址为: https://code.google.com/archive/p/sersync/

    虽是个陈年老项目,有年久失修的风险(最新的版本还是 2011 年),但如果你正好有比较轻量级的数据同步需求,sersync 不失为是一个好选择。


    假设我们今天的需求如下:

    • 有两台主机,IP 分别为 192.168.1.10192.168.1.11
    • 这两台主机上都有个 /var/data 目录,目前里面都是空的。
    • 希望这两台主机的 /var/data 能双向实时同步。
    • 例如,在 192.168.1.10:/var/data 中添加一个文件后,192.168.1.11:/var/data 上也会相应出现该文件,反之亦然。

    接来下用 5 分钟时间来解决这个需求!

    为了更加方便快捷地使用 sersync,我已经将其打包为一个 docker 镜像。

    首先,在两台主机上分别下载镜像

    docker pull taojy123/sersync
    

    接下来,在 192.168.1.10 主机上启动 sersync

    docker run -d -v /var/data:/syncdir -p 873:873 -e TARGET_HOST=192.168.1.11 --name sersync taojy123/sersync
    

    注意:
    1. -v 参数后面的 /var/data 为宿主机上要进行同步的目录,可根据实际情况更改,/syncdir 为固定容器内目录不要改动。
    2. 必须要暴露宿主机的 873 端口,有防火墙的要打开。
    3. TARGET_HOST 设置为另一台主机的 IP 或域名。

    然后,在另一台主机 192.168.1.11 上也启动 sersync

    docker run -d -v /var/data:/syncdir -p 873:873 -e TARGET_HOST=192.168.1.10 --name sersync taojy123/sersync
    

    注意:
    1. 这里的 TARGET_HOST 要相应改成前面那台主机的地址,即 192.168.1.10
    2. 命令执行后,当前 192.168.1.10:/var/data 目录里面内容,会被 192.168.1.11:/var/data 覆盖。

    搞定!这两台主机上的 /var/data 目录,已实现双向同步。

    验证一下:

    # on 192.168.1.10
    > cd /var/data
    > echo 123 > a.txt
    
    # on 192.168.1.11
    > cd /var/data
    > ls
    a.txt
    > echo 456 > b.txt
    > rm a.txt
    
    
    # on 192.168.1.10
    > cd /var/data
    > ls
    b.txt
    > cat b.txt
    456
    

    总结一下
    目前跨服务器数据同步使用的比较多的解决方案是 inotify-tools + rsync,本文提到的 sersync 其核心原来也是利用 rsync 进行同步。在此例中与 docker 相结合更好地突出了其轻量级、便捷实用的特性,不失为一件神器。

    相关文章

      网友评论

        本文标题:sersync - 数据同步神器

        本文链接:https://www.haomeiwen.com/subject/trbuuktx.html