svnsync实现版本库的同步备份

svnsync实现版本库的同步备份

实验环境:

A,172.17.201.243(主)

B,172.17.201.88(备)

项目需求,生产环境要求svn服务器实现热备机制,于是就想到了svn自带的svnsync机制,操作流程如下:

1、在要备份的机器上(172.17.201.88)建立版本库

mkdir -p /home/svn/SH2014/SVNdata
svnadmin create /home/svn/SH2014/SVNdata

2、进入备份机器(172.17.201.88)版本库SVNdata下的hooks目录。

cd /home/svn/SH2014/SVNdata/hooks/

3、创建pre-revprop-change文件

cp pre-revprop-change.tmpl pre-revprop-change

4、修改pre-revprop-change权限,更改为755

chmod 755 pre-revprop-change

5、修改pre-revprop-change内容

为 echo “Changing revision properties other than svn:log is prohibited” >&2
exit 0(1修改为0)

说明如下:

原脚本的意思是如果修改的是svn:log属性,将允许修改,返回0;否则,不允许,返回1

我们要将它改为允许修改所有的属性,在脚本中直接返回0

6、在备份机器上执行同步初始化操作

svnsync init file:///home/svn/SH2014/SVNdata http://172.17.201.243/SHSVN/SVNdata --username "svnadmin" --password "adminpassword"

会出现以下信息:

Copied properties for revision 0.

7、在备份机器上执行同步操作

svnsync sync file:///home/svn/SH2014/SVNdata

会出现以下信息:

Transmitting file data .
Committed revision 1.
Copied properties for revision 1.
Transmitting file data .
Committed revision 2.
Copied properties for revision 2.
Transmitting file data .
Committed revision 3.
Copied properties for revision 3.

出现以上信息就说明同步成功了。

8、设置备份库的uuid,uuid是respository创建时自动生成的一个随机数,SVN Client利用uuid判断是否为同一个库。

进入主机,查看主机库的uuid

svnlook uuid /home/svn/repos

会显示主机库的uuid

78312468-8f6a-4e0c-9dc4-2b397672ca84

进入备份机,查看备份机新建库的uuid

svnlook uuid /home/svn/SH2014/SVNdata

会显示新建库的uuid

c7717876-c1c0-4c6c-9b12-70b43bd7116b

将新建库的uuid改成与主机库的uuid相同

svnadmin setuuid /home/svn/SH2014/SVNdata 78312468-8f6a-4e0c-9dc4-2b397672ca84

再次查看新建库的uuid

svnlook uuid /home/svn/SH2014/SVNdata

会显示新库的uuid与主机库的uuid相同了

78312468-8f6a-4e0c-9dc4-2b397672ca84

9、配置Apache和权限

当出现主机宕机需要备份机马上顶上去时,修改一下IP即可。

客户端如果已经有checkout的项目,则需要relocate,relocate 前提条件就是uuid是相同的。

时间: 2024-11-09 00:37:08

svnsync实现版本库的同步备份的相关文章

SVN版本库的异地备份

 现在开发通常都会用SVN来进行版本控制,并且SVN服务端也都会统一的建立到某个服务器上来保存项目源码,这没什么问题.但是如果有一天服务器发生了不可恢复的故障,这将造成不可弥补的巨大损失.所以我们要做好备份工作,当主版本库出现问题时,可切换到备用版本库,从而提高SVN的可用性. 今天介绍的就是SVN版本库的远程自动备份,将版本库备份到另一台机器上.当然实现的方式是多种多样的,我采用的是SVN的svnsync工具来同步版本库. 同步备份所需要的命令 1)svnsync init 初始化,建立目

linux下svnsync同步版本库配置

svnsync可以方便的把另一个源svn版本同步到指定版本库中,为多版本库应用提供方便. 示例: (版本库所存目录  /svn/  下) 源版本库:  svn://196.168.0.1/testA      同步用户:sync_source 密码:123456 目标版本库: svn://196.168.0.2/testB    同步用户:sync 密码:123456 源版本库用于开发编辑提交等应用,目标版本库只能可读用于上线备份等应用. 进入目标服务器: 编辑sync同步必要hooks脚本pr

svnsync同步版本库

假设有一个主版本库(Master)需要同步到另外一个服务器的新库(Mirror)当中以达到备份的效果. 主(Master): 将要通过svnsync被同步的活动读/写版本库.镜像(Mirror): 将要与master通过svnsync同步的只读版本库.Subversion 1.4发布之后,svnsync工具就成了标准Subversion的一部分,可以用"一个可以维护只读Subversion镜像所有功能的工具"描述, 从它的文档中理解它的目的非常简单,为什么在企业中维护一个镜像版本库非常

在windows上自动备份SVN版本库及定时删除

下面的脚本是在windows SVN的备份策略,采用的是hotcopy的方法 方案一: 1.先创建一个fullBackup的脚本:fullBackup.bat echo off rem Subversion的安装目录 set SVN_HOME="D:\Program Files\Subversion\bin" rem 所有版本库的父目录 set SVN_ROOT=D:\svnserver rem 备份的目录 set BACKUP_SVN_ROOT=D:\backupsvn\fullba

SVN同步版本库与网站目录

如何创建SVN版本库及同步文件到WEB目录 来源:空谷 一 安装与配置SVN 1.安装subversion centos: yum install subversion ubuntu: apt-get install subversion 2.建立版本库,本例中我们的版本库建立在/var/svn,假设该版本库目录为:foo cd /var mkdir svn svnadmin create foo 3.配置版本库 刚才建立的版本库,需要配置认证方式,用户名和密码,权限配置这三个文件,分别对应/v

Git版本库工作流程图想

对照廖雪峰的教程,发现有很多难以理解的地方,画了一个图想方便以后参考 首先两个基本命令反应了版本库最本质的工作流程,后面的命令其实都基于此git add 把文件修改添加到暂存区git commit 在原版本的基础上增加一个暂存区的文件修改成为新版本 git add . 以../.git根目录工作区为范围的所有文件修改添加到暂存区 git add 1.txt 把1.txt的文件修改添加到暂存区 再次git add . 所有的版本控制系统,其实只能跟踪文本文件的改动.如果要真正使用版本控制系统,就要

用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器

如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录:            svn://192.168.16.199/source_svn 同步目标目录:      http:// 目标IP:8080/source_svnbak 方法: 1.如果目标目录存在相同的项目,请先清除,重新建立空项目 2.在目标服务器中建立svn版本库source_svnbak svnadmi

SVN版本库的备份及迁移

备份某个版本库:打开控制台窗口 1.备份某个版本库: svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile 1.导入某个版本库: svnadmin load newrepos < dumpfile 更详细参考 http://blog.csdn.net/windone0109/article/details/2908133 初级篇: 版本库数据的移植:svnadmin dump.svnadmin load 导出: $svnlook you

SVN版本库的备份、还原、移植(初级篇、中级篇和高级篇)

版本库数据的移植:svnadmin dump.svnadmin load 导出: $svnlook youngest myrepos //查看到目前为止最新的版本号 $svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile 导入: $svnadmin load newrepos < dumpfile 中级篇: $svnadmin dump myrepos –r 23 >rev-23.dumpfile           //将ver