VisualSVN-Server-2.1.5SVN远程备份手册

更新时间:2023-06-02 10:40:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

远程备份简单操作

远程备份简单操作

>

版本:1.3 发布日期:2010-11-2 实施日期:2010-11-2

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

修订记录

目 录

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

修订记录 ............................................................................................................................................2 1. 1.1. 1.2. 1.3. 1.4. 1.5. 2. 3. 4. 5. 6. 7. 7.1.

同步备所需要的命令 .................................................................................................4 Svnsyn ................................................................................................................................4 目标 ....................................................................................................................................4 过程 ....................................................................................................................................4 初始化 ................................................................................................................................5 同步 ....................................................................................................................................6

具体操作操作流程概括 .............................................................................................8 遇到的问题与解决方法 .............................................................................................8 Subversion同步工具svnsync出错 ........................................................................9 使用svnsync备份很简单,步骤如下 .....................................................................9 注意事项 ..................................................................................................................12 关于svnsync备份时出现的问题解析 ...................................................................12 问题一 ..............................................................................................................................12

7.1.1. 问题描述 ..........................................................................................................................12 7.1.2. 解决方案 ..........................................................................................................................13 7.2.

问题二 ..............................................................................................................................13

7.2.1. 问题描述 ..........................................................................................................................13 7.2.2. 解决方案 ..........................................................................................................................13

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

1. 同步备所需要的命令

1.1. Svnsyn

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令

1)svnsync init

初始化,建立目标库和源库之间的同步关系

命令格式: svnsync init 目标库URL 源库URL

2) svnsync sync 真正的同步

命令格式 svnsync sync 目标库URL

1.2. 目标

本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上

假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会,因为我们使用http协议

目标库在机器B, file:///F:/Repositories/svnproject,这个为了简单和安全,我们使用file://协议

1.3. 过程

1)创建pre-revprop-change.bat文件:即复制pre-revprop-change.tmpl ,将其扩展名改为pre-revprop-change.bat,并且清空原有的所有内容、保存。如下图所示:

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

2)修改目标库的脚本pre-revprop-change 进入F:/svn/svnproject/hooks/

cd /svn/svnproject/hooks/ 打开后末尾字段如下:

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 1,原脚本的意思是如果修改的是svn:log属性,将允许修改,返回0;否则,不允许,返回1,我们要将它改为允许修改所有的属性,在脚本中直接返回0,新的脚本如下:exit 1 exit 0即可。

1.4. 初始化

在机器B上输入命令:

在DOS命令的cd C:\Program Files\VisualSVN Server\bin根目录下输入:

svnsync init (有空格)

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

会提示输入用户名和密码,这里提供的用户名和密码是可以完全读取于

的计算机密码,用户名和密码,,即如下图:

1.5. 同步

1) svnsync sync

依然会提示输入用户名和密码,不过,你可以在这个命令之后加上 username 、password参数,在目录:C:\Program Files\VisualSVN Server\bin下

输入:svnsync sync file:///F:/Repositories/svnproject --username username --password password

如下图所示:

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

(Transmitting:正在进行传送,传输) 如上截图所示,会一直走下去直至目标库与源库的版本号完全一致为止;

2) 同步结束后,如下图所示:

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

到这一步时,SVN远程备份就已经完成了,如果版本库较大时,备份的时间可能会有点慢,要有耐心,用一天也是有可能的,你可以打开目标库看看,和源库是一样的。

注意:应该定期的一周或者两周打开命令窗口输入:svnsync sync file:///F:/ 已达到定期同步的目的。

2. 具体操作操作流程概括

1、在要备份的机器上建立版本库:svnadmin create svn 2、进入hooks目录:cd svn/svnproject/hooks/

3、创建pre-revprop-change.bat文件:复制pre-revprop-change.tmpl ,将扩展名改为pre-revprop-change.bat,并且清空原有的所有内容,保存。

4、修改文件: pre-revprop-change文件,

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

6、同步初步: svnsync init

http://192.168.2.235:8081/svn/svnproject svnsync: Destination repository is already synchronizing from svn://10.10.10.1′

7、实现同步:

svnsync sync –username username –password password1

3. 遇到的问题与解决方法

Svnsync:Cannot initialize(初始化) a repository with content in it :当版本库有内容时不能初始化

如果反复操作都是同样错误的话,很可能是你版本库有内容,需要你版本库svn,重新按照

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

svn服务器的安装手册里SVN与apache的集成来重新新建版本库。

4. Subversion同步工具svnsync出错

在使用svnsync同步两个版本库时经常出现如下的错误,并自动中断了同步操作:

Copied properties for revision 461.

svnsync: Server sent unexpected return value (502 Bad Gateway) in response to PR OPFIND request for /svn/!svn/vcc/default

当再次运行svnsync sync file:///F:/Repositories/svnproject时,有可能出现“Failed to get lock on destination repos”的错误信息,使同步操作无法继续进行: F:\Subversion> svnsync sync Failed

to

get

lock

on

destination

repos,

currently

held

by

firehack:963c0909-45ad-644f-b383-7e35d445028f ……

Failed to get lock on destination repos, currently held by firehack:963c0909-45ad-644f-b383-7e35d445028f

svnsync: Couldn t get lock on destination repos after 10 attempts 解决办法:

删除SVN仓库修订号0 svn:sync-lock的保护.

svn propdel svn:sync-lock --revprop -r 0 file:///F:/Repositories/svnproject

5. 使用svnsync备份很简单,步骤如下

一、 在备份机上创建一个空库:svnadmin create svn

二、更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本):

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

cd F:/svn/svnproject/hooks;

cp pre-revprop-change.tmpl pre-revprop-change; chmod 755 pre-revprop-change; vi pre-revprop-change;

将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。 三、初始化,此时还没有备份任何数据:

svnsync init

语法是:svnsync init {你刚创建的库url} {源库url} 注意本地url是三个斜杠的:/// 四、开始备份:

svnsync sync file:///F:/svn/svnproject 这时就一个个版本进行备份了。 附录: 可能的报错一:

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

Failed to get lock on destination repos, currently held by ':0c424c20-2e3b-0410-bd34-7fdd53c25d02'

svnsync: Couldn't get lock on destination repos after 10 attempts 这个时候可能属性被锁了,删掉属性:

svn propdel svn:sync-lock --revprop -r0 如下截图所示:

删除成功后,再试一遍基本就可以了。

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

如果反复操作都是同样错误的话,有可能是你的svn安装有问题,重新安装一遍就好了,我试过的。

可能报错二、

svnsync: REPORT request failed on ' '

svnsync: The requested report is unknown.

这是因为svn源库的版本太低了,svnsync所需要的函数Report是svn1.4后加入的,只能对你的库进行升级后才能备份。

svn proplist -v --revprop -r0 https:///svn

svn proplist -v --revprop -r0 svnsync sync

6. 注意事项

据本人总结,上述方式的备份,需要注意的是:

1) 在备份服务器上不能进行任意操作,只能打开,不能增删改动! 2) 要定期备份;

Dos 命令输入:Svnlook author –r 5387 F:/svn/svnproject 会显示作者:

7. 关于svnsync备份时出现的问题解析

7.1. 问题一

7.1.1. 问题描述

使用svnsync进行备份的过程中突然断了下电,再次启动后进行备份时就出现这“svnsync:Malformed file”提示。

下面介绍利用两个命令svnsync来同步版本库,达到备份版本库的目的要用到两个命令1)svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL2) svnsync sync真正的同步命令格式 svnsync sync 目标库URL本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上假设我们要同步的源版本库为 http://192.168.1.210/svn/svnprojec位于机器A,具体路径我们不必理会。

7.1.2. 解决方案

svnsync:Malformed file意思是文件格式损坏,svnsync无法判断目标是否有效的svn库。解决办法可以试一下:将svn库下面的几个文件拷贝过去覆盖掉;或者是重新进行svnsync初始化。

7.2. 问题二

7.2.1. 问题描述

在初始化过程中再运行初始化的时候出现如下的错误是什么原因呢?: D:\Program Files\Subversion\bin>svnsync init file:///e:/svn/Huigu-JXZHX http://1 92.168.1.164/svn/Huigu-JXZHX

svnsync: 钩子“pre-revprop-change”失败,错误输出是: 'REPOS' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

'REV' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

'PROPNAME' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

'ACTION' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

此时不应有 "$ACTION",

7.2.2. 解决方案

用户应该只是把原来文件中的最后一行“exit 1 ”替换成了“exit 0”所以就出问题了,正确的是把原来整个文件就剩下“exit 0” 。

补充:Linux下还需设置脚本文件pre-revprop-change的属性为可执行,即: chmod +x pre-revprop-change

Windows下所有文件默认即为可执行,不用设置。 另外:在Linux下脚本的第一行应保留 #!/bin/sh

本文来源:https://www.bwwdw.com/article/laz1.html

Top