备份一篇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 ...
随机推荐
- JAVA-数据库之JDBC连接MySQL数据库
相关资料:<21天学通Java Web开发> JDBC连接MySQL数据库1.如果需要通过JDBC来连接MySQL数据库,还必须先在MySQL数据库服务器中创建数据库和表. Connect ...
- Laravel 5.4 Cache::put的一个小坑
使用的是Cache的file驱动,然而在\Cache::put($key,$value)时发现,并没有存入. 一开始以为是file驱动的问题,后来跟踪代码发现,居然源码里当过期时间不设置时,根本不保存 ...
- 【转】jdbc:oracle:thin:@192.168.3.98:1521:orcl(详解)
整理自互联网 一. jdbc:oracle:thin:@192.168.3.98:1521:orcljdbc:表示采用jdbc方式连接数据库oracle:表示连接的是oracle数据库thin:表示连 ...
- php多进程编程相关资料(以备参考)
进程与线程的区别 要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都 ...
- C语言 · 身份证排序
算法提高 身份证排序 时间限制:1.0s 内存限制:256.0MB 问题描述 安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号 ...
- HTTP1.1 协议
Response Headers 响应头 Expires 设置响应内容的过期时间 过期时间头信息属性值只能是HTTP格式的日期时间,HTTP的日期时间必须是格林威治时 间(GMT),而不是本地时间.举 ...
- 解决:According to TLD or attribute directive in tag file, attribute value does not accept any express。
http://blog.csdn.net/lzblog/article/details/22076893 ——————————————————————————————————————————————— ...
- HTML5数据推送SSE原理及应用开发
JavaScript表达行为,CSS表达外观,注意HTML既表达结构(逻辑结构),又表达内容(数据本身)通常需要更新数据时,并不需要更新结构,正是这种不改变组织结构仅改变数据的诉求,推动了数据拉取和数 ...
- 微信小程序——picker通过value返回你想获取的值
关于微信小程序中的picker使用方法可以访问:picker-小程序 从它的官方文档中,可以看出它返回的value值是它range的下标: 在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的 ...
- React Native常用第三方组件汇总--史上最全[转]
本文出处: http://blog.csdn.net/chichengjunma/article/details/52920137 React Native 项目常用第三方组件汇总: react-na ...