备份一篇SVN的文章, 从搭建到主备库
来源: http://h2ofly.blog.51cto.com/6834926/1539141
【svn简介】
svn用于版本管理数据,它采用了分支管理系统。在它出现之前存在CVS,svn推出之后,逐步替代了CVS。
目前又出现git,相比于svn,git更支持分布式版本管理,目前发展很猛,这里不详细介绍。大家可以先把svn了解熟悉之后,再看看git,对比下。
ps:时代总是在进步啊,需要跟上潮流。同时,需要了解潮流为何,需要思考潮流背后的原因为何,了解背景历史为何,否则就是盲从了。
【第一安装】
1
|
yum install subversion |
(当然如果你觉得这个版本不满足需求,也可以编译安装,去下载相关的包即可)
具体是安装一下6个包
1
2
3
4
5
6
|
( 1 / 6 ): apr - 1.3 . 9 - 5.el6_2 .i686.rpm | 129 kB 00 : 01 ( 2 / 6 ): apr - util - 1.3 . 9 - 3.el6_0 . 1.i686 .rpm | 89 kB 00 : 00 ( 3 / 6 ): neon - 0.29 . 3 - 3.el6_4 .i686.rpm | 120 kB 00 : 00 ( 4 / 6 ): pakchois - 0.4 - 3.2 .el6.i686.rpm | 21 kB 00 : 00 ( 5 / 6 ): perl - URI - 1.40 - 2.el6 .noarch.rpm | 117 kB 00 : 00 ( 6 / 6 ): subversion - 1.6 . 11 - 10.el6_5 .i686.rpm | 2.2 MB 00 : 07 |
【第二配置】
2.1、创建svn目录
1
|
mkdir - p / data / svndata / |
2.2、创建多项目:将iso、android、web分开管理
1
2
3
|
svnadmin create / data / svndata / ios svnadmin create / data / svndata / android svnadmin create / data / svndata / web |
注意:svnadmin create用于创建独立的项目,创建好之后如下图:
至此,创建了三个不同的项目,那怎样统一管理呢?请继续向下看
2.3、统一管理配置(用于管理多个项目)
2.3.1、创建统一管理相关配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
|
mkdir - p / data / svndata / conf / #该目录用于管理所有项目的帐号密码、权限控制等 cat / data / svndata / conf / svnserve.conf #svn的总控文件[general] anon - access = none #未鉴定的用户无权限访问该版本库 auth - access = write #鉴定后的可读写版本库 password - db = passwd #使用的密码文件是同级路径的passwd文件,即是/data/svndata/conf/passwd authz - db = authz #使用的权限控制文件是同级路径的authz文件,即是/data/svndata/conf/authz realm = svndata #realm 指定版本库的认证域,即在登录时提示的认证域名称。各个项目的认证域都可以自定义 cat / data / svndata / conf / passwd #每个用户的用户名和密码 [users] h2o = Yj3NlMD river = Yjh9jNj |
1
2
|
cat / data / svndata / conf / authz #权限管理,权限管理的统一思路是:创建多个组,将各个用户加入到各个组,控制各个组的权限。以后对权限管理就维持在组的维度,否则以人为粒度管理,会死人滴 |
1
2
3
4
5
6
7
8
9
10
|
[groups] develop = h2o,user1 #说明develop有两人 android = h2o,user3 ios = h2o,river,user2 [android: / trunk] #说明android的trunk相关权限 @android = rw #说明android 组有读写权限 @develop = rw [ios: / trunk] @ios = rw @develop = rw |
自此,总控的配置文件已经准备完毕
2.3.2各项目配置文件修改
每个项目默认使用的配置文件是该项目下的配置文件,所以必须修改掉,否则不受总控配置文件的管理的
每个项目目录结构如下:
1
2
3
4
5
6
|
# grep -v '#' /data/svndata/android/conf/svnserve.conf #其他项目类似,这里就不一一列举了[general] anon - access = none auth - access = write password - db = .. / .. / conf / passwd #说明使用总控的密码文件 authz - db = .. / .. / conf / authz #说明使用总控的权限文件 realm = android |
【第三启动】
1
|
svnserve - d - r / data / svndata / |
【第四数据初始化】
已有代码需要导入svn版本库如下
1
|
svn import / tmp / data / ios / file : / / / data / svndata / codes / ios / trunk - m 'init import ’ |
【第五备库搭建】
注:这里使用了svnsync定时同步数据,也可以做实时同步,请自己研究(大致提示为配置钩子post-commit来实现)
5.1备库项目创建(和主库创建项目无异)以下操作在备库上操作
1
2
3
4
|
mkdir - p / data / svndata / svnadmin create / data / svndata / ios svnadmin create / data / svndata / android svnadmin create / data / svndata / web |
配置文件也和主库一样:包括总控的配置文件及各项目的配置文件,这里就不详细列了。
5.2准备备库的钩子(以android项目为例,其他项目一样)以下操作在备库上操作
1
2
3
4
5
6
|
cat / data / svndata / android / hooks / pre - revprop - change #!/bin/sh exit 0 chmod 755 / data / svndata / android / hooks / pre - revprop - change |
5.3svnsync初始化及同步数据
这里以android 项目为例,其他项目类似
注:172.16.0.185 是备库,172.16.0.120是主库;主库和备库的用户名和密码一致,并且h2o需要有相关权限,具体看/data/svndata/conf/authz
1
2
3
|
svnsync init svn: / / 172.16 . 0.185 / android svn: / / 172.16 . 0.120 / android - - username h2o - - password Yj3NlMD - - no - auth - cache #svnsync 建立主备库关系 svnsync sync svn: / / 172.16 . 0.185 / android - - username h2o - - password Yj3NlMD - - no - auth - cache #svnsync 将数据从主库同步过来 |
如果看到以下内容就说明成功了。如果发现只有版本号,没有Transmitting file data,请仔细检查主库备库配置文件,是否有错误和遗漏
1
2
3
4
5
6
7
8
9
10
11
|
Transmitting file data . Committed revision 1. Copied properties for revision 1. Transmitting file data . Committed revision 2. Copied properties for revision 2. Committed revision 3. Copied properties for revision 3. Transmitting file data . Committed revision 4. Copied properties for revision 4. |
【第六定时更新脚本】
在备库上写定时同步的脚本,关键如下
1
2
3
4
5
6
7
8
|
#!/bin/bash now_time = $( date " + % F_ % T”) projects = (android ios web) for project in ${projects[@]};do svnsync sync svn: / / 172.16 . 0.185 / $project - - username h2o - - password Yj3NlMD - - no - auth - cache >> / home / logs / svnbak.log.$now_time 2 >& 1 done |
备份一篇SVN的文章, 从搭建到主备库的更多相关文章
- MySQL集群搭建(1)-主备搭建
数据库在任何业务中都是最重要的环节之一,这就对数据库架构提出的较高的要求.单点数据库永远不应该出现在生产环境,我们已经目睹过太多由于单点.备份缺失造成的损失,所以,搭建高可用 MySQL 集群是非常有 ...
- 记一次DG搭建过程中备库ORA-00210,ORA-00202,ORA-27086错误
ORA-00210: cannot open the specified control file ORA-00202: control file: '/u01/app/oracle/oradata/ ...
- linux下oracle11G DG搭建(三):环绕备库搭建操作
linux下oracle11G DG搭建(三):环绕备库搭建操作 环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g 1 ...
- pgsql主备搭建及切换
二.主从搭建 2.1测试目标 测试postgresql主从搭建安装过程 2.2环境准备 实例级别的复制 流复制主库可读写,但从库只允许查询不允许写人, 而逻辑复制的从库可读写 流复制实验环境 主机 主 ...
- pgsql物理复制(pgsql 备库的搭建以及角色互换,提升)
结构图如下: Postgresql早在9.0版本开始支持物理复制,也称为流复制,通过从实例级复制出一个与主库一模一样的备库.流复制同步方式有同步,异步两种,如果主节点和备节点不是很忙,通常异步模式下备 ...
- MySQL集群搭建(2)-主主从模式
1 环境准备 上次我们搭建了主备架构,如下所示 这次我们的搭建目标是 具体配置信息 IP 系统 端口 MySQL版本 节点 读写 说明 192.168.41.83 Centos6.8 3306 5.7 ...
- kingbaseES V8R6集群备份恢复案例之---备库作为repo主机执行物理备份
案例说明: 此案例是在KingbaseES V8R6集群环境下,当主库磁盘空间不足时,执行sys_rman备份,将集群的备库节点作为repo主机,执行备份,并将备份存储在备库的磁盘空间. 集群架构 ...
- SVN源码服务器搭建-详细教程
一.引言 笔者曾经试图在网上搜索一篇关于SVN源代码服务器搭建方面的中文技术文章,可惜,所找到的,要么是不完整,要么就是对笔者没什么帮助的文章,TortoiseSvn的帮助文档固然强大,但因为是英文, ...
- SSM 框架-03-MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
SSM 框架-03-MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建 如果你是使用 Eclipse 你需要先安装 MyEclipse,请参考:SSM 框架-02-MyEclipse ...
随机推荐
- 操作Excel文件--java
java操作Excel首先要导入 JExcelAPI JExcelAPI是一套纯粹使用JAVA开发出来的Excel表格操作组件,本身并不与特定的操作系统进行绑定,可以在不同的操作系统上对Excel文件 ...
- Spring security 用户,角色,权限,资源
转自:http://blog.csdn.net/wybqq/article/details/52940194 关于Spring security对用户请求的处理过程 体现在这两个过程的体现. 关于用户 ...
- Emacs代码折叠
进入HideShow mode: M-x hs-minor-mode(幸亏有tab键..要不这么长的命令=.=) 主要的功能: * C-c @ C-M-s 显示所有的代码 * C-c @ C-M-h ...
- Install CasperJS on Windows
Phantomjs installation additionsAppend ";C:\phantomjs" to your PATH environment variable. ...
- Redis Cluster集群搭建<原>
一.环境配置 一台window 7上安装虚拟机,虚拟机中安装的是centos系统. 二.目标 Redis集群搭建的方式有多种,根据集群逻辑的位置,大致可以分为三大类:基于客户端分片的Redis ...
- backlight 子系统(转载)
http://blog.csdn.net/weiqing1981127/article/details/8511676 Linux下的Backlight子系统(一) http://blog.csd ...
- OCiOS开发:音频播放器 AVAudioPlayer
简单介绍 AVAudioPlayer音频播放器可以提供简单的音频播放功能.其头文件包括在AVFoudation.framework中. AVAudioPlayer未提供可视化界面,须要通过其提供的播放 ...
- FPGA中的时序分析(一)
谈及此部分,多多少少有一定的难度,笔者写下这篇文章,差不多是在学习FPGA一年之后的成果,尽管当时也是看过类似的文章,但是都没有引起笔者注意,笔者现在再对此知识进行梳理,也发现了有很多不少的收获.笔者 ...
- 信噪比——信号加噪相关的知识
信噪比:即Signal noise ratio , 即SNR: 它的单位为 dB, 公式为: SNR = 10lg(PS / PN), 其中 ps 表示信号的有效功率, pn 表示噪声的有效功率: 如 ...
- webstorm 重置所有设置
我的是win10的,删除如下路径的文件夹C:\Users\XXX(你自己电脑用户名)\.IntelliJIdeaxxxx(版本号) 这是最快捷的方法