版本管理工具Subversion Edge的备份恢复与数据迁移方案
软件开发生命周期中会使用到多种工具,这些工具的更迭与迁移,备份与恢复都构成了软件开发生命周期的重要部分。这篇文章以当下最新版本的Subversion Edge为例介绍一下其备份恢复与数据迁移方案,因相关内容官方资料不全,类似内容较少,所以进行了此部分整理。在这篇文章中获取当下最新的版本进行了验证,对于实际的使用者相信有较强的借鉴作用。
目录
- Subversion Edge的前世今生
- Subversion Edge的优势
- 版本事实停更的尴尬
- Edge环境准备
- 备份恢复功能
- 备份方式1:手动备份
- 备份方式2:定时备份
- 恢复功能
- 备份恢复限制
- 数据迁移
- 步骤1: 事前备份
- 步骤2: 安装Subversion Edge
- 步骤3: 停止Subversion Edge
- 步骤4: 拷贝事前备份内容
- 步骤6: 点击仓库列表中的Discover按钮
- 总结
Subversion Edge的前世今生
2017年8月7日,CollabNet和VersionOne宣布合并,合并后公司保留CollabNet的名称,总部设与亚特兰大,CollabNet首席执行官Flint Brenton将担任合并后公司的CEO,VersionOne的首席执行官Robert Holler将担任首席战略官。作为被Garnter和IDC所青睐的敏捷开发的创新者的VersionOne,一直具有较为稳定的地位,而CollabNet依托与Subversion Edge和Team Forge等也有着不错的口碑。Subversion Edge还是收到很多SVN的使用者的喜爱和追随的。
Subversion Edge的优势
直接使用Subversion,需要配置Apache以及http方式的插件,对于很多运维新手来说非常麻烦,另外如何通过浏览器更好的浏览代码,也需要自行组装ViewVC等工具。而使用Subversion Edge,则可以直接如下等诸多功能:
- 提供整体的Web页面对用户/权限进行统一管理
- 内嵌直接提供svn和http协议的访问方式
- 提供ViewVC的浏览器代码查阅方式
- 提供基本可用RestAPI可以通过API进行用户和仓库的管理
- 提供了简单的备份和恢复方式
- 提供了页面对于svn用户和组进行权限设定的页面
- …
所以可以看到Subversion Edge基本上可以满足大部分功能要求不是很强的中小规模的svn用户群体的需求。
版本事实停更的尴尬
当我们提及版本管理工具,Git和SVN是必提的两个代表,然而,SVN作为存在感逐年弱化的版本管理工具,虽然有众多追随者,但是当下整体没落的趋势已经无法抵挡。半商业化工具Subversion Edge的版本迭代速度已经印证了这一观点,虽然官方还没有说过放弃Edge,但是看一下最新的版本你会发现,目前官网最新版本的Subversion Edge 为5.2.4,所对应的subversion的版本为1.8.19,而官方subversion的1.8版本的更新在2017年后已不再更新,3年不更说明什么?更新不是不及时,而是根本已经是事实上的停新。
Edge环境准备
环境的安装由于官方为提供容器版本,我曾经整理过一键安装脚本,在CentOS的环境上从svn的用户和组的创建一直到防火墙中端口的打开都有设定,一般从官网下载下来相应的tar.gz安装包直接执行即可,详细可参看:
- https://blog.csdn.net/liumiaocn/article/details/108174169
然后在此环境中准备如下的仓库:
以及如下的用户信息
后面可以用来确认数据迁移之后相应的仓库和用户信息是否得到了恢复。
备份恢复功能
前文提到Subversion Edge提供了简单的备份/恢复的功能,接下来可以具体来看一下其备份和恢复相关的使用方式。具体的备份方式主要有如下两种
备份方式1:手动备份
可以从页面进行点击选择相应的仓库,然后点击dump按钮即可(当前最新版本只能一个一个的选择)
然后输入序号或者直接点击Dump按钮即可完成备份
需要注意的是,这是一个异步操作,实际的完成可能还需要一点时间
稍等片刻再次刷新即可看到备份的dump的压缩文件了
而进入到此时csvn的data/dumps目录下也可以看到此文件
[root@liumiaocn demo-repo]# pwd
/opt/subversion/csvn/data/dumps/demo-repo
[root@liumiaocn demo-repo]# ls
demo-repo-r0_6-20201029081030.dump.zip
[root@liumiaocn demo-repo]#
备份方式2:定时备份
也可以根据需要创建定时任务,支持在指定时间进行全备或者热备(注意没有增量备份)
恢复功能
Subversion Edge提供的恢复功能在创建仓库中可以从备份中进行选择,首先我们将备份过的仓库选中之后点击删除按钮
为了防止误删,需要手工输入I_AM_SURE来确认确实要删除
点击OK之后即删除
而此时如果到csvn所在的服务器上进行查看,发现至少此时在repositories的目录中确实已经不再存在。
[root@liumiaocn repositories]# pwd
/opt/subversion/csvn/data/repositories
[root@liumiaocn repositories]# ls
test-repo
[root@liumiaocn repositories]#
这样就做好了恢复之前的准备了,恢复的过程首先要点击仓库列表页面的Create按钮
选择Back,即可看到已经备份的dump文件信息
设定Name信息,然后点击Create按钮即可完成恢复
再次点击仓库列表页面可以看到确实删除的demo-repo已经恢复
备份恢复限制
此功能看起来非常正常地能够完成备份和恢复,问题来了,如果需要做迁移,比如只是迁移到另外一台机器上,在另外一台机器上安装相同的Subversion Edge,然后将此zip的dump文件拷贝过去,能不能通过Create的方式恢复呢?让我们来看一下这个Dump文件的内容
[root@liumiaocn demo-repo]# ls demo-repo-r0_6-20201029081030.dump.zip
demo-repo-r0_6-20201029081030.dump.zip
[root@liumiaocn demo-repo]# unzip demo-repo-r0_6-20201029081030.dump.zip
Archive: demo-repo-r0_6-20201029081030.dump.zipinflating: demo-repo-r0_6-20201029081030.dump
[root@liumiaocn demo-repo]# cat demo-repo-r0_6-20201029081030.dump
SVN-fs-dump-format-version: 2UUID: 9b139063-c713-456d-b23c-f1926d238d7bRevision-number: 0
Prop-content-length: 56
Content-length: 56K 8
svn:date
V 27
2020-08-23T21:07:31.460781Z
PROPS-ENDRevision-number: 1
Prop-content-length: 131
Content-length: 131K 10
svn:author
V 3
svn
K 8
svn:date
V 27
2020-08-23T21:07:31.931052Z
K 7
svn:log
V 33
Creating_initial_branch_structure
PROPS-ENDNode-path: branches
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10PROPS-ENDNode-path: tags
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10PROPS-ENDNode-path: trunk
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10PROPS-ENDRevision-number: 2
Prop-content-length: 126
Content-length: 126K 10
svn:author
V 5
admin
K 8
svn:date
V 27
2020-08-23T21:42:42.442230Z
K 7
svn:log
V 26
commit in MacOS SVN client
PROPS-ENDNode-path: trunk/ReadME.md
Node-kind: file
Node-action: add
Prop-content-length: 10
Text-content-length: 17
Text-content-md5: 967a4e1508e0a424b97a18f782c80f13
Text-content-sha1: dafd24ff94cb6a3e81fafbadd94b938a9e7a1325
Content-length: 27PROPS-END
Created in MacOSRevision-number: 3
Prop-content-length: 99
Content-length: 99K 10
svn:author
V 5
admin
K 8
svn:date
V 27
2020-08-23T23:07:17.742198Z
K 7
svn:log
V 0PROPS-ENDNode-path: trunk/ReadME.md
Node-kind: file
Node-action: change
Text-content-length: 42
Text-content-md5: f52fcc2387ae9480823946c29636095a
Text-content-sha1: 64fdf2ffdefb9bd3d000fec6846a8dedfe7b7347
Content-length: 42Created in MacOS
test for pre-commit hookRevision-number: 4
Prop-content-length: 99
Content-length: 99K 10
svn:author
V 5
admin
K 8
svn:date
V 27
2020-08-23T23:08:42.796810Z
K 7
svn:log
V 0PROPS-ENDNode-path: trunk/ReadME.md
Node-kind: file
Node-action: change
Text-content-length: 62
Text-content-md5: c6cb69cff8bdcb3153036d1ff9409b32
Text-content-sha1: 51dbf272854b88e832bb3600e95af977c1840c12
Content-length: 62Created in MacOS
test for pre-commit hook
new line for ReadMeRevision-number: 5
Prop-content-length: 99
Content-length: 99K 10
svn:author
V 5
admin
K 8
svn:date
V 27
2020-08-23T23:16:10.296062Z
K 7
svn:log
V 0PROPS-ENDNode-path: trunk/ReadME.md
Node-kind: file
Node-action: change
Text-content-length: 87
Text-content-md5: a18400b16549c205b32a5f5f6652ff1a
Text-content-sha1: dd58eb1faeee9fc6f51cec5aded66cfabbdf45fa
Content-length: 87Created in MacOS
test for pre-commit hook
new line for ReadMe
test for pre-commit hookRevision-number: 6
Prop-content-length: 99
Content-length: 99K 10
svn:author
V 5
admin
K 8
svn:date
V 27
2020-08-24T08:45:49.531467Z
K 7
svn:log
V 0PROPS-ENDNode-path: trunk/ReadME.md
Node-kind: file
Node-action: change
Text-content-length: 106
Text-content-md5: 7844d119c03ee940202f3bad0549c73b
Text-content-sha1: cb0cd44e406563a7b4074c511c961ecde05dd0d6
Content-length: 106Created in MacOS
test for pre-commit hook
new line for ReadMe
test for pre-commit hook
add for root test [root@liumiaocn demo-repo]#
看完之后就会发现,不可以,因为它只是一个简单的文本信息的文件。因为明显地看出此删除不是真正的删除,而是标记一下,此Dump也非真正意义上的可以直接用来恢复的数据,而是根据本机上的其他数据进行恢复的部分信息而已,所以备份和恢复的功能只能在本机上使用,而且还有一部分比如数据库使用到的数据的部分也需要进行备份的。
数据迁移
场景:如果需要将此Edge运行在另外一台机器上,需要做进行怎样的步骤和进行怎样的准备呢?
步骤1: 事前备份
进行如下部分内容的备份:
所在目录 | 备份对象 | 备份对象说明 |
---|---|---|
/opt/subversion/csvn/data | csvn-production-hsqldb.script | Edge本身的数据库用户以及Job等信息都在此文件中保存 |
/opt/subversion/csvn/data/conf | svn_auth_file | 用户和密码信息 |
/opt/subversion/csvn/data/conf | svn_access_file | 用户和组的权限控制信息 |
/opt/subversion/csvn/data/repositories | 所有仓库目录 | svn的所有仓库内容 |
将上述内容全部进行备份即可,其余不用。
步骤2: 安装Subversion Edge
在目标机器上安装相同版本的Subversion Edge,建议安装目录也保持一致。详细可参看:
- https://blog.csdn.net/liumiaocn/article/details/108174169
步骤3: 停止Subversion Edge
停止刚刚安装并启动成功的Subversion Edge(此步骤非常重要,尤其是后续的script文件和设定文件,如果在启动状态下,会出现被覆盖的问题)
执行命令:service csvn stop
执行命令:service csvn-httpd stop
步骤4: 拷贝事前备份内容
拷贝事前备份的内容至目标机器
所在目录 | 备份对象 | 备份对象说明 |
---|---|---|
/opt/subversion/csvn/data | csvn-production-hsqldb.script | Edge本身的数据库用户以及Job等信息都在此文件中保存 |
/opt/subversion/csvn/data/conf | svn_auth_file | 用户和密码信息 |
/opt/subversion/csvn/data/conf | svn_access_file | 用户和组的权限控制信息 |
/opt/subversion/csvn/data/repositories | 所有仓库目录 | svn的所有仓库内容 |
## 步骤5: 启动Subversion Edge服务 使用如下命令启动Subversion Edge服务或者重启机器。 >执行命令:service csvn start >执行命令:service csvn-httpd start
步骤6: 点击仓库列表中的Discover按钮
拷贝过去的仓库信息在仓库中可能看不到,这时只需要点击仓库列表中的Discover按钮,就可以看到迁移的相关仓库了。
总结
这篇文章介绍了Subversion Edge的备份恢复功能以及数据迁移的方案,对于实际的使用有一定的参考意义。
版本管理工具Subversion Edge的备份恢复与数据迁移方案相关推荐
- TiDB数据库备份恢复与数据迁移
TiDB数据库备份恢复与数据迁移 数据迁移 使用 mydumper/loader 全量导入数据 mydumper/loader 全量导入数据最佳实践 某次导入示例,以及相关的配置 从 MySQL 导出 ...
- PLSQL Developer备份恢复oracle数据
PLSQL Developer备份恢复oracle数据 使用PL sql提供的功能可以快速的备份恢复oracle数据. 1 导出存储过程,触发器,序列等所有用户对象.(备份) 在PL/SQL Dev ...
- 使用binlog备份恢复myqsl数据
使用binlog备份恢复myqsl数据 什么是binlog binlog备份数据 binlog恢复数据 读取数据 读取数据 方法一:使用mysqlbinlog读取binlog日志: 方法二:登录服务器 ...
- 数据备份数据迁移方案
数据备份方式 物理备份 冷备:cp.tar.- 逻辑备份 mysqldump //备份 mysql //恢复 物理备份及恢复 备份 ] cp -r /var/lib/mysql 目录/mysql.ba ...
- SVN可视化管理工具——Subversion Edge使用
Subversion Edge使用经验之谈 -- 服务器配置篇 由于想通过Subversion来进行内部的版本控制,来有效地控制好每一个版本迭代,提高团队效率. 在安装之前有几点需要注意的地方: 1- ...
- 版本管理:Subversion Edge:角色与权限控制
这篇文章介绍一下Subverison Edge中内置的角色和权限控制方式和Edge所提供的页面操作功能. 环境和事前准备 Subversion Edge环境准备和仓库创建的操作可参看如下文章: htt ...
- oracle数据备份 恢复,Oracle数据备份和恢复
Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法. 本文涉及的备份与恢复的其它概念都是狭义的 ...
- easyrecovery工具2023最新版一键恢复丢失数据免费下载
通常,许多人会将工作或生活中的数据存储在我们的计算机上.很多时候,由于我们的误操作或其他一些问题,很容易错误地删除一些文件和数据.特别是,一些计算机故障总是会导致数据丢失,这是非常麻烦的.当需要重新安 ...
- redis 备份导出rdb_Redis数据迁移利器之redisshake
" 当需要进行Redis实例或集群数据迁移时,我们可以采用导出/导入的方式进行数据迁移,但当需要做数据异地灾备或双活时,再使用传统的方式就不合适了,我们需要借助工具(如redis-port/ ...
最新文章
- 【C】——线程引入 pthread_self 和 pthread_equal 原因 ——解决不同平台的问题!
- 前后端token机制 识别用户登录信息
- 【干货】网易云音乐歌单的推荐算法解析
- docker环境安装mysql
- 1.6 编程基础之一维数组 03 计算书费 python
- windows 10右键项添加Notepad++ 和插件管理
- 每日一句20190909
- Atitit 编程语言的block概念 目录 1. 匿名block 1 1.1. 函数块 方法快 1 1.2. Sp udf块 1 2. 实现block的方式 1 2.1. 早期的语言大多是采用en
- python继承方式是基于原型吗_【Python】python 普通继承方式和super继承方式
- Windows电脑端有什么好用的便签工具?
- 这款神器,IDM随意下载任意网页音频视频文件!
- 空间直线与球面相交算法
- Mac重装Homebrew
- 利用 @media screen 实现网页布局的自适应,@media screen and
- 前端必会的 HTML+CSS 常用技巧 之 虚线的实现方式
- STM32外部中断及串口
- 手把手 Golang 实现静态图像与视频流人脸识别
- django踩坑记录(4)
- C语言编程>第十一周 ⑤ 请编写一个函数,用来删除字符串中的所有空格。
- sql 除法计算一直 为0原因及解决方案