备份一篇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 ...
随机推荐
- postgresql相关命令
1,打开命令窗口: 2,查看数据库用户:\du 3,列出所有数据库名:\l或者SELECT datname FROM pg_database; 4,切换某个数据库下面的某个用户下面:\c 数据库名 用 ...
- CSS网页布局中易犯的30个小错误
即使是CSS高手,也难免在书写CSS代码的时候出一些小错误,或者说,任何一种代码都是如此.小错误却往往造成大问题,浪费很多无辜的时间来调试和排错.查看下面这份CSS网页布局中易犯的10个小错误,努力的 ...
- 问题-DelphiXE10.1 FireDAC联接oracle数据库方法
问题现象:安装oracle后,安装Delphi10.1,放FDConnection1时,选择"Ora"驱动时,提示如下: [FireDAC][Phys][Ora]-315. Can ...
- iOS - UITableView加载网络图片 cell适应图片高度
使用xib创建自定制cell 显示图片 创建一个继承UITableViewCell的类 勾选xib 如下是xib创建图 xib 向.h拖拽一个关联线 .h .m 2.代码创建(使用三方适配 ...
- IBM ILOG JViews Charts 产品及功能介绍
摘抄连接:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1004_lidb_ilogjchart/ IBM I ...
- TP v5中Url Compat模式
compatible 对于配置pathinfo的支持,在Nginx作服务器.无数种系统要同时运行的环境,实在是一项很累赘的事情,而又不想很low的多个参数(像m.c.a)构造路由参数,我需要那种不必强 ...
- centos下软件安装
1. vim安装 yum -y install vim*
- 解决EasyUi中的DataGrid删除一条记录后,被删除的数据仍处于被选中状态问题
项目中遇到这么一个问题,在easyui的datagrid中,删除一条记录成功,重新加载datagrid后,去点编辑操作,仍可把之前删除掉的那条记录进行编辑操作,正常情况应该是,删除后再去点击“编辑”, ...
- mysql深坑之--group_concat有长度限制!!!!默认1024
在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更 ...
- HOW-TO GEEK SCHOOL
This How-To Geek School class is intended for people who want to learn more about security when usin ...