定时自动备份版本库

来源:互联网 发布:猎头 知乎 编辑:程序博客网 时间:2024/05/20 22:31

定时自动备份版本库

一、业务目标
①svn库的远程自动备份,将版本库备份到另一台机器上。
假设我们要同步的源svn库为 http://192.168.12.192/svn/source位于服务器A
目标svn库在服务器B, http://192.168.12.191/svn/dest
②实现svn库的本地备份,只需要将上述目标库的位置,改成本地svn库位置即可

二、相关指令 
达到备份版本库的目的要用到两个命令(均在SVN存放路径 即Repositories目录下运行)

点击主界面的cmd命令标志即可
svnsync init
初始化,建立目标库(备份数据的备份库)和源库(备份数据的来源库)之间的同步关系
命令格式: svnsync init 目标库URL 源库URL --username 用户名 --password 密(两个URL之间有空格,也要注意端口号的配置问题)如
svnsync init http://192.168.12.192/svn/dest http://192.168.12.191/svn/source

--username test –password 123123

svnsync sync
真正的同步 命令格式: svnsync sync 目标库URL

svnsync sync http://192.168.12.191/svn/dest

 

svnsync是Subversion的远程版本库镜像工具,它允许你把一个版本库的内容录入到另一个。在任何镜像场景中,有两个版本库:源版本库,镜像(或“sink”)版本库,源版本库就是svnsync获取修订版本的库,镜像版本库是源版本库修订版本的目标,两个版本库可以是在本地或远程—它们只是通过URL跟踪。

svnsync进程只需要对源版本库有读权限;它不会尝试修改它。但是很明显,svnsync可以读写访问镜像版本库。

参考:http://www.subversion.org.cn/svnbook/1.4/svn.ref.svnsync.html#svn.ref.svnsync.c

三、过程示例

(1)备份(本机测试)
①在要备份的机器上建立版本库(如果是本地备份,则在本地建立版本库):

(目标库)svnadmin create dest   (源库)svnadmin create source

或者利用VisualSVN服务端创建两个版本库,具体创建方法略:

为两个版本库添加一个相同的用户如用户名:test 密码:123123,注意:该用户在源版本库中只有读的权限,在目标版本库中有读写的权限。
②进入目标版本库的hooks目录,例如cd D:\Repositories\dest\hooks
③创建pre-revprop-change.bat文件:复制pre-revprop-change.tmpl,并将扩展名改为pre-revprop-change.bat,内容改为 exit 0 然后保存
④同步初步:将两个库进行同步关联操作         
在目标机器上,打开命令提示符窗口,或打开SVN服务器Bin目录,运行
svnsync init http://192.168.12.192/svn/dest http://192.168.12.191/svn/source

--username test –password 123123

出现以下内容为正确:


⑤实现同步:执行此命令即可将源版本库的文件同步到目标版本库
在目标机器上,打开命令提示符窗口或打开SVN服务器Bin目录,运行
svnsync sync http://192.168.12.191/svn/dest

出现以下内容为正确

可能出现的问题:

第④步执行后:出现

原因:说明目标版本库的hooks文件夹中pre-revprop-change.bat缺少或有误,编写一份即可。

第⑤步执行后:出现

原因:注意帐号的读写权限或者和本地的测试帐号有冲突

 

 

 

 

出现:

原因:SVN同步时,源库端会在目标库端加lock,成功同步后释放lock;但当SVN同步异常中断后,lock是不会自动释放的。这时在执行svn sync命令,就可能会出现Failed to get lock on destination repos的问题,这个时候可能属性被锁了,删掉锁即可输入如下指令

svn propdelsvn:sync-lock --revprop –r0 http://192.168.12.192/svn/DESTTEST

(2)定时执行备份。

将最后一步 svnsync sync http://192.168.12.192/svn/dest指令写成批处理文件,并将该文件放在SVN安装目录的bin目录下,然后定时执行该文件即可完成定时同步的任务。

(为防止出现同步异常后再次同步时锁未释放,可以在该文件内先执行释放锁的操作,即

svn propdel svn:sync-lock--revprop -r0 http://192.168.12.192/svn/dest此句先写)
这里我们用到了windows自带的任务计划程序①在控制面板\管理工具下,打开任务计划程序
主界面:点击右侧操作的创建任务

 

 

 

 

 

②开始创建任务,常规选项卡下,主要设置任务的基本信息,这里我们一般给任务起一个名字就可以了,例如SVN同步

③操作选项卡下,点击新建,这里可以设定我们要执行的操作。我们备份SVN版本库,需要执行,刚才设定好的备份批处理文件。这个文件,我们实现应该放在SVN服务器安装目录的bin目录下。我们点击浏览,找到这个文件。

 

 

 

 

④在触发器选项卡下,我们可以新建触发器,这里我们可以设定执行刚才设定的操作的条件。让其自动执行。

⑤条件和设置选项卡下,可以设定执行该任务的其他条件,根据我们自己的情况选择即可。

此时,定时自动备份SVN版本库的任务就创建成功了。

 

0 0
原创粉丝点击