window操作系统下SVN通过sync命令增量同步备份,首次全量备份(单机备份&双机备份均可)

目录

一、准备环境

 二、备份步骤

三、可能出现的问题


一、准备环境

1、两台机器操作系统为window系统,网络要能通信。均安装了VisualSVN-Server服务端:一台源库,一台目标备份库(我本人源库ip地址192.168.6.222,目标备份库ip地址192.168.6.253)

2、源库和备份库的访问路径设置为ip访问,访问方式为http(默认为https访问,需增加配置,否则报错。文章末尾有说明)。

配置方式如下:

(1)打开安装好的VisualSVN Server Manager,右击选择Properties。

 (2)在nerwork配置中改ip为本机ip,端口自定义配置,并且不勾选HTTPS选项

 (3)在svn服务的安装目录下,进入conf文件夹,编辑httpd.conf,将服务名字(ServerName)也改为ip+端口,并保存

 (4)重启svn服务

 二、备份步骤

1、按照源库上已有的仓库在目标机器上通过VisualSvn Server建立新的仓库,最好名字一样,这样不会乱,除了名字其他全部默认下一步就可以。(例如我的是源库上有一个GBPT,则在目标库上建立一个GBPT)

 

 2、在目标机器上找到文件目录下新建的仓库,进入hooks目录。(我的是D:\Repositories\GBPT\hooks)。在目录下新建pre-revprop-change.bat 文件,全部内容只有一行:exit 0

 

3、源库机器上(我的是192.168.6.222),打开命令行窗口,进入svn服务的安装路径(我的是F:\Program Files (x86)\Subversion\bin,如果添加了svn的环境变量,则可直接运行下边命令,不用管目录,否则会提示不是内部命令)

​

svnsync init  http://192.168.6.253:8443/svn/GBPT file:///G:/svn/repository/GBPT
​

其中 http://192.168.6.253:8443/svn/GBPT目标源svn库地址(可从VisualSvn Server中复制得到,如下图),file:///G:/svn/repository/GBPT 源svn库地址(注意:从文件夹地址栏复制出来是反斜杠,需要修改,否则会报错)

执行后,会出现选择项让你选择,输入p(接受)即可。

回车后,会出现一个Administrator的用户名。然后让你输入密码。这个不用理会,直接回车即可。

然后将向你询问登录目标库和源库的用户名和密码,建议为两个库设置相同的用户名及相同的密码

正确后,显示Copied properties for revision0.(也可能是中文的)

执行后可以再次执行一下,如果提示已同步,那么说明初始化已经完成了。

4、执行同步 (这个操作在源库所在服务器的VisualSvnserver安装目录下的bin目录下cmd执行,要不然会提示svnsync不是内部或者外部命令)。正确执行后,首次是全量备份,如果源服务器中仓库的数据较大,同步时间会较长,耐心等待同步完成。

svnsync sync http://192.168.6.253:8443/svn/GBPT

5、在源库服务器上作同步的仓库hooks中创建post-commit.bat 文件,里边输入

​

svnsync sync http://192.168.6.253:8443/svn/GBPT --sync-username svn用户名 --sync-password svn密码
​

  这样在本地向源库服务器svn提交数据时,就会自动同步到目标库!

三、可能出现的问题

1、svn用https模式访问,这样会导致报错

这个地方可能会出现一个错误(SSL handshake failed: SSL error:Key usage violation in certificate has been detected.)意思是说握手失败,证书无法检验

解决方案:

我用的是win7 64位的系统。

A.首先修改注册表。输入regedit命令,进入注册表

B.找到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VisualSVN\VisualSVN Server目录,新建一个"CreateGnuTLSCompatibleCertificate"=dword:00000001

C.打开VisualSVN Server Manager,在操作(Action)下点击Properties->Certificate->  Change certificate,然后下一步下一步就可以了

D.如果还是不行的话,就改变一下登陆的方式,勾选https,再勾选http。然后登陆,就可以解决问题了。

2、从目标版本库获得锁失败

这个问题的原因是在于svnsync的执行过程,因为整个过程是源库读操作,目标库写操作。在执行时,该svnsync程序将锁定被写的目标库,操作完毕之后再解锁。但是由于意外终止了执行过程,于是只进行了锁定却没有进行解锁,导致下次失败。

解决办法:删除版本库属性从0版本开始删除

svn propdel svn:sync-lock --revprop -r 0 http://192.168.6.253:8443/svn/GBPT

执行完后,在重新执行同步命令

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Windows下实现SVN自动双备份可以通过编写批处理脚本来实现。以下是一个简单的方案: 首先,创建一个文本文件,使用扩展名为.bat,例如backup.bat。 在批处理脚本中,我们可以使用svnadmin dump命令备份SVN仓库。这个命令会将整个仓库备份为一个独立的文件。 为了实现自动双备份,我们可以将备份文件分别保存在两个不同的目录中。我们可以选择在两个不同的硬盘或者存储介质上保存备份文件,以确保数据安全。 以下是一个示例的批处理脚本代码: ``` @echo off setlocal set REPO_PATH=C:\path\to\your\repository set BACKUP_PATH_1=D:\backup\path\1 set BACKUP_PATH_2=E:\backup\path\2 set TIMESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% svnadmin dump %REPO_PATH% > %BACKUP_PATH_1%\backup_%TIMESTAMP%.svn svnadmin dump %REPO_PATH% > %BACKUP_PATH_2%\backup_%TIMESTAMP%.svn endlocal ``` 在上面的代码中,我们首先设置了SVN仓库的路径(REPO_PATH),然后设置了两个备份目录的路径(BACKUP_PATH_1和BACKUP_PATH_2)。接着我们通过调用svnadmin dump命令SVN仓库进行备份,并将备份文件保存在指定的备份目录中。在备份文件的文件名中,我们添加了时间戳以确保每次备份文件都有唯一的名称。 最后,我们使用endlocal命令关闭本地变量的作用域,确保变量不会对其他程序产生影响。 如果你想要在特定的时间间隔内自动执行备份,你可以使用Windows任务计划程序来调度批处理脚本的运行。通过配置任务计划程序,你可以指定备份脚本的执行时间和频率,从而实现自动双备份的功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr__bai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值