前些日子验证了SVN主从同步的方法,但是后来想想,貌似还是不太符合我的需求。我需要的是主备可以双向同步。看了几种常用的SVN备份方式都是单向的。自己探究一番,发现可以用一些其他的方式来实现。
首先可以使用scp命令来实现主备服务器的双向同步。接上会的实验环境继续测试。192.168.77.195为主SVN,192.168.77.193为备SVN。在主SVN上随便提交点东西来验证。如下图是在主SVN上提交的内容。
执行scp命令,将整个svndata目录同步到备SVN下。然后在备SVN上更新项目。发现可以更新成功。然后我在备SVN上删除一个文件后提交。
此刻在备SVN上执行scp命令,将svndata目录同步到主SVN。去主SVN更新项目。发现可以正常更新,且没有错误,项目内文件都正常,日志也正常。
但是使用scp同步时会有一个问题,除了第一次同步,其他时候都会提示大量文件权限不足的问题。尝试配置权限后也无效。但是同步没有问题,只是会有权限提示。
这样一来,瞬间觉得这个方法不美丽了。我这重度强迫症患者怎么能容忍这样的问题出现。
后来又想到尝试使用rsync来实现同步。首先在主SVN上删除一个文件,提交项目。
在主SVN执行rsync将svndata目录同步到备SVN。更新备SVN项目发现更新正常,且文件、日志都正常。
使用rsync同步时并没有权限问题的提示。
那么就定使用rsync来进行SVN的主备同步。现在着手准备用python手搓一个SVN主备同步程序,这样一来就不用每次都手动执行了。程序完成后我会放出源码。只是……也许……需要比较久的时间……
如果大家还有什么好的方案也可以来交流一下。