sersync
是基于 boost1.43.0
inotify api
rsync command
开发的一个服务器同步工具。
托管在 Google Code
上的项目地址为: https://code.google.com/archive/p/sersync/
虽是个陈年老项目,有年久失修的风险(最新的版本还是 2011 年),但如果你正好有比较轻量级的数据同步需求,sersync
不失为是一个好选择。
假设我们今天的需求如下:
- 有两台主机,IP 分别为
192.168.1.10
和192.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
相结合更好地突出了其轻量级、便捷实用的特性,不失为一件神器。
网友评论