来源: 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 -/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 --/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

转载于:https://www.cnblogs.com/walkerwang/p/4346033.html

备份一篇SVN的文章, 从搭建到主备库相关推荐

  1. Oracle11gR2下搭建DataGuard主备同步详解

    Oracle11gR2下搭建DataGuard主备同步详解 一 前言: 本文主要流程基于blog.itpub.net上博友oracle_zsx所著文章:<手把手教你安装Data Guard> ...

  2. 数据库篇-mysql主备搭建

    mysql主备搭建 作者:周云玉 日期:2022年2月18日 上午 背景:基于线上项目PXC经常出现问题,切换成主备模式 主备原理,如图 一.创建主数据库节点 1.创建容器 注意:如果是线上单节点改成 ...

  3. ADG架构搭建4 -- 搭建一主两备ADG架构

    本文接该系列文章的上一篇:ADG架构搭建3 – 一主一备ADG主备切换 前言 请先参照文章<ADG架构搭建1–Oracle安装>完成第三台服务器的Oracle安装. 本文将完成的ADG架构 ...

  4. ADG架构搭建5 -- 一主两备ADG主备切换

    本文接该系列文章的上一篇:ADG架构搭建4 – 搭建一主两备ADG架构 前言 在<ADG架构搭建3 – 一主一备ADG主备切换>一文中,已经带领大家完成了一主一备ADG的主备切换,相信大家 ...

  5. ADG架构搭建3 -- 一主一备ADG主备切换

    本文接该系列文章的上一篇:ADG架构搭建2 – 搭建一主一备ADG架构 前言 Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间 ...

  6. 主备库内存不一致的Data Guard环境搭建全过程

    墨墨导读:一个单节点RAC,要做一套Data Guard,但是备库能给数据库的内存只有主库的一半左右,可以实现吗?答案是可以的,本文详述整个过程. 一.概况 1. 涉及的技术点 1)RAC作为prim ...

  7. DM8数据守护(Data Watch) 实时主备环境搭建与管理

    上海蒙马软件技术有限公司 日期:2021年7月24日 一.概述 1.架构 DM 数据守护(Data Watch)的实现原理非常简单:将主库(生产库)产生的Redo日志传输到备库,备库接收并重新应用Re ...

  8. DM8数据库安装与实时主备搭建

    目录 1 DM8数据库安装(Linux) 1.1 选择映像文件 1.2 创建安装用户 1.3 挂载光驱 1.4 创建文件夹dm8 1.5 数据库安装 1.6 环境配置 1.7 初始化数据库 1.8 其 ...

  9. linux下oracle11G DG搭建(三):围绕备库搭建操作

    linux下oracle11G DG搭建(三):围绕备库搭建操作 环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本 RedHat Enterprise5.5.Oracle 11g 11 ...

  10. dg建立linux分区,linux下oracle11G DG搭建(三):环绕备库搭建操作

    linux下oracle11G DG搭建(三):环绕备库搭建操作 环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g 1 ...

最新文章

  1. 天然气阶梯是按年还是按月_社保断缴了,还有补缴的机会?新规下,今年起按这5种方式处理...
  2. 关于mysql的表名/字段名/字段值是否区分大小写的问题
  3. Python实现文本自动分类(朴素贝叶斯方法)
  4. 【算法学习】枚举与剪枝(一)
  5. Java数组的定义方式有哪几种
  6. linux 子域dns,linux下搭建DNS子域及相关授权详解
  7. Problem D: 分数减法——结构体
  8. 一些关于爱情的心理学事实
  9. delphi 第三方组件 log4cpp.dll
  10. 使用HTML5 / Canvas / JavaScript拍摄浏览器内屏幕截图
  11. 多元统计分析基于r课后答案_(完整版)多元统计分析课后练习答案
  12. Idea新建项目和快捷键
  13. Java 求解加油站
  14. VTK实现多个体数据映射到一起进行渲染
  15. 基于.net的当下传统制造业MES系统的思考(一)
  16. Python 计算 log以2为底的对数
  17. RIoTBoard开发板系列笔记(十二)—— gstreamer + vpu实现视频硬件解码播放
  18. ZZULIOJ: 1187: 棒棒糖(结构体专题)
  19. 小人物走路、奔跑的VC++游戏特效,适合刚学习VC++游戏编程的朋友
  20. Linux rpm 命令 【转】

热门文章

  1. CCBPM 同表单分合流说明
  2. objective-C语言:第一个OC程序
  3. 动态包含与静态包含的区别
  4. 几个常用的JavaScript字符串处理函数
  5. 举例在项目中动态构建自己的程序集,.NET产生动态程序集!
  6. HBuilder实现WiFi调试Android
  7. Win32 编程
  8. Safari浏览器Session问题
  9. Wacom发布Cintiq Companion 2
  10. 我是怎样给 Delphi 代码着色的 - 回复 sunhj 的问题