SVN主从镜像配置


各种各样的事情,导致有段时间没有更新了。今年已经过半了,年底有计划把我现在的NAS升级一下,老的NAS拿回老家做个一异地灾备。因为NAS有SVN,所以考虑了几种SVN的备份方式。主要的有三种方式,我这里根据我自己的需求采用了主从镜像的方式实现,其他另外两种方式,以及这些备份优缺点和实现原理去搜索吧,一搜一大堆,比我写的也好,我这里就不赘述了。下面直接开始SVN主从镜像的配置过程。

我这里准备了两台服务器,主服务IP地址是:192.168.77.195,从服务IP地址是:192.168.77.193。主服务使用的是FreeBSD 13.2的操作系统,从服务器使用的是Debian 12.0的操作系统。安装配置SVN这里就不做赘述了,之前有写过一个树莓派搭建SVN的文章,可以去看看。传送门:。

首先需要在两边都创建一个同名的项目,这里项目名就叫:project。我在主库的项目中提交一个文件,更新一下版本,用于后面验证同步结果。

进入从库的项目目录,看清楚哈,是从库。然后进入hooks目录,这里需要创建pre-revprop-change钩子文件,然后给予其执行权限,编辑文件。

把文件末尾这些内容都删除,只留最后一行,将最后一行的值修改为0。或者更暴力一点,直接echo -e '#!/bin/sh\nexit 0' > pre-revprop-change。

之后的操作都是在主库上完成,看清楚,是主库。执行命令开始同步初始化,命令格式:

svnsync init 从库地址 主库地址。

这里需要双向身份验证,Password for 'root'处直接回车,我这里使用的svn账号是在主从两端都配置过的,用户名和密码两端可以不一样,权限可以都是读写,但是为了保证主库的安全,可以在主库端只给svn账号读权限,在从库端因为需要写入所以给svn账号读写权限。

初始化同步完成后就可以开始执行同步命令了,命令格式如下:

svnsync sync 从库地址

依旧需要双向验证,之后会提示完成了几个版本的同步。连接上对应的从库,更新一下,可以发现主库上的版本已经完成了同步。

至此SVN主从镜像配置完成。