SVN(Subversion)自动同步备份配置
源机器:192.168.1.1
备份机器:192.168.1.2
前提条件:
1、两台机器的网络是连通的
2、两台机器必须同时安装了SVN服务器
假设:
源机器上需要同步的库名为autoSync,访问地址为:svn://192.168.1.1/autoSync,对其具备读写权限的账户:sync/sync
备份机器配置:
1、创建与源机器库名相同的空库
# 假设备份机器的SVN根目录建立在 /home/backup/svn/repository下
svnadmin create /home/backup/svn/repository/autoSync
2、配置备份机器上的autoSync
分别修改conf下的svnserve.conf、passwd、authz,根据实际情况配置,假设创建了用户sync/sync,对库autoSync具备读写权限,配置方法略,配置完成后启动SVN服务
3、创建并修改pre-revprop-change文件
cd /home/backup/svn/repository/autoSync/hooks cp pre-revprop-change.tmpl pre-revprop-change vi pre-revprop-change
将文件末尾的“exit1”修改为“exit 0”即可,保存退出
REPOS="$1" REV="$2" USER="$3" PROPNAME="$4" ACTION="$5" if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi echo "Changing revision properties other than svn:log is prohibited" >&2 exit 0
增加可执行权限
chmod 755 pre-revprop-change
4、初始化
命令:
svnsync init --username 用户名 --password 密码 备份机器库URL 源机器库URL
说明:
用户名和密码是对源机器SVN库具备读写权限的SVN用户
示例:
svnsync init --username sync --password sync svn://192.168.1.2/autoSync svn://192.168.1.1/autoSync
5、首次同步
首次同步即为一次全备份过程,在此期间请停止客户端段源机器哦一切操作(提交代码等)
命令:
svnsync sync 备份机器库URL
示例:
svnsync sync svn://192.168.1.2/autoSync
源机器配置
6、增量自动同步配置
创建并修改post-commit文件
# 假设源机器的SVN根目录建立在 /home/svn/repository下 cd /home/svn/repository/autoSync/hooks cp post-commit.tmpl post-commit vi post-commit
在文件末尾追加:svnsync sync --non-interactive 备份机器库URL --username 用户名 --password 密码
说明:
用户名和密码是对备份机器SVN库具备读写权限的SVN用户
示例:
svnsync sync --non-interactive svn://192.168.1.2/autoSync --username sync --password sync
7、术语
配置完成,今后客户端再向SVN(192.168.1.1)提交文件时,会自动触发源机器(192.168.1.1)向备份机器(192.168.1.2)提交更新
8、版本库UUID一致性
首先查看源机器库的UUID,假设得到的是:fcdcbee9-6be3-4575-8d4a-681ec15ad8e0
svnlook uuid svn://192.168.1.1/autoSync
更新备份机器库的UUID为源机器库的UUID
svnadmin setuuid svn://192.168.1.2/autoSync fcdcbee9-6be3-4575-8d4a-681ec15ad8e0