备份一篇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/iossvnadmin 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/authzrealm = svndata#realm 指定版本库的认证域,即在登录时提示的认证域名称。各个项目的认证域都可以自定义cat /data/svndata/conf/passwd #每个用户的用户名和密码[users]h2o = Yj3NlMDriver = 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,user3ios=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 = writepassword-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/iossvnadmin create /data/svndata/androidsvnadmin create /data/svndata/web |
配置文件也和主库一样:包括总控的配置文件及各项目的配置文件,这里就不详细列了。
5.2准备备库的钩子(以android项目为例,其他项目一样)以下操作在备库上操作
|
1
2
3
4
5
6
|
cat /data/svndata/android/hooks/pre-revprop-change#!/bin/shexit 0chmod 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/bashnow_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>&1done |
备份一篇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 ...
随机推荐
- ASP.NET学习笔记(3)——用户增删改查(三层)
说明(2017-10-6 11:21:58): 1. 十一放假在家也没写几行代码,本来还想着利用假期把asp.net看完,结果天天喝酒睡觉,回去的票也没买到,惨.. 2. 断断续续的把用户信息的页面写 ...
- html页面布局总结篇
1. 使用float布局 注意点:使用浮动布局要注意清除浮动.使用伪类清除 浮动层:给元素的float属性赋值后,就是脱离文档流,进行左右浮动,紧贴着父元素(默认为body文本区域)的左右边框. 而此 ...
- WPF重写Button样式
首先指定OverridesDefaultStyle属性为True: 然后添加样式: 重写ControlTemplate: <Window.Resources> <Style x:Ke ...
- u-boot2011.09 启动流程记录
start arch/arm/cpu/armv7/start.S 36 .globl _start 37 _start: b reset 136 reset: 137 bl save_boot_par ...
- python 3 操作mysql数据库的方法
参考:http://www.cnblogs.com/txw1958/archive/2012/07/22/python3-mysql.html http://www.jb51.net/article/ ...
- Android——监听事件总结
各种监听事件 1.按钮 Button(1)点击监听 btn_1.setOnClickListener(new View.OnClickListener() { (2)长按监听 btn_1.setOnL ...
- Iconfont在移动端应用的问题
关于部分奇葩用户代理不显示字体图标 以酷派为代表的部分安卓手机自带浏览器.微信/QQ WebView 等用户代理无法正常显示 Icon Font,原因可能是这些用户代理无法正确处理伪元素 conten ...
- Spring,hibernate,struts的面试笔试题(含答案)
Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久 ...
- 安卓程序代写 网上程序代写[原]Android开发技巧--ListView
1. ListView中元素的排序 ListView中的元素排序, 即将数据源排序即可; 给集合排序的方法 : 调用Collections的sort(list, Comparator)方法, 该方法需 ...
- 远程操作与端口转发 SSH原理与运用
SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一节的操作,就是一个例子: $ ssh user@host 'mkdir -p .ssh && cat >&g ...