备份一篇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 ...
随机推荐
- delphi调用webservice (.NET C#版)
uses XMLIntf, XMLDoc; XML to XTR文件转换 .File-->open打开你要分析的XML文件 .在左边选择你要分析的接点,双击加到中间的转换列表中 .Create- ...
- Faiss教程:入门
Faiss处理固定维度d的数据,矩阵每一行表示一个向量,每列表示向量的一项.Faiss采用32-bit浮点型存储. 假设xb为数据集,维度为\(nb\times{d}\):xq是查询数据,维度为\(n ...
- loadrunner文本检查点
将脚本切换回代码界面, 在光标闪烁的上行,添加如下的代码: 添加的代码根据你检查的方式不同而不同, 你可以选择其中之一即可. 代码一: web_reg_find("Text=Payment ...
- docker:Error running DeviceCreate (createSnapDevice) dm_task_run failed
1) service docker stop 2) thin_check /home/docker/devicemapper/devicemapper/metadata 3) thin_check - ...
- hdfs平衡分布
这篇文章是从网上看到的,觉得很好就收藏了,但是最终不知道出处了. Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加新的数据节点.当HDFS出现不平衡状况的时候 ...
- Intellij Idea搭建Spark开发环境
在Spark高速入门指南 – Spark安装与基础使用中介绍了Spark的安装与配置.在那里还介绍了使用spark-submit提交应用.只是不能使用vim来开发Spark应用.放着IDE的方便不用. ...
- 稳定模式在RESTful架构中的应用
本文由 ImportNew - 乔永琪 翻译自 javaworld.欢迎加入翻译小组.转载请见文末要求. 分布式系统中保持网络稳定的五种方式 重试模式 超时模式 断路器模式 握手模式 隔离壁模式 倘若 ...
- iptable 限制ip访问
-- 查找所有规则iptables -L INPUT --line-numbers -- 删除一条规则iptables -D INPUT 11 (注意,这个11是行号,是iptables -L INP ...
- struts2 拦截器配置
CheckLoginInterceptor.java---拦截器具体实现类: package com.sunhoo.hcpms.struts2.action.interceptors; import ...
- What Great .NET Developers Ought To Know (More .NET Interview Questions)
A while back, I posted a list of ASP.NET Interview Questions. Conventional wisdom was split, with ab ...