搭建SVN服务并且实现远端备份_第1页
搭建SVN服务并且实现远端备份_第2页
搭建SVN服务并且实现远端备份_第3页
搭建SVN服务并且实现远端备份_第4页
搭建SVN服务并且实现远端备份_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、搭建SVN服务并且实现备份场景:某公司承接了两个开发项目,准备为开发项目组建立svn服务,收集开发人员一天开发的代码,要求有三点1、 可以实现开发人员使用svn客户端连接使用2、 需要实现代码的实施备份一遍灾难恢复3、 开发人员可以执行上传下载操作实现思路:1、 搭建svn版本控制,创建多个项目,客户端成功使用2、 实现svn服务端与备份机的无登录交互3、 结合ssh同步源实现代码同步4、 测试增删改到备份机,数据是否一致物理拓扑:在开始之前需要检查以下几点:1、 主机名是否更改2、 Hosts文件双方是否能够解析3、 双方是否可以正常物理通信4、 系统为最小化安装,并配置yum源安装了gcc

2、编辑器以及Development tools5、 确定好svn版本库树形结构6、 关闭SELINUXSvn版本库结构此结构主要是分为了一个大的总版本库,版本库下面有两个分支,分别代表了一个项目,每个项目下面分别有骨干、分支、合并等能够阙东以上三点就可以实施了首先在svnserver上进行操作由于很多公司的svn是采用rpm的方式进行安装的,今天我这里也是一样,采用rpm的方式安装检查系统是否已经默认安装了subversion,如果未安装执行rpm -qa subversionsubversion-1.6.11-7.el6.x86_64如果未安装请执行yum -y install subvers

3、ion安装即可按照版本库创建版本库,我们按照规范进行操作,在根目录下创建一个目录名为development,在development目录下面我们建立svn总版本库名为svndatamkdir /developmentsvnadmin create /development/svndata其中svnadmin 是svn的管理命令 可以使用 svnadmin help查看相关帮助,create创建版本库的选项,想查看create后面的参数请使用 svnadmin help create 查看相关帮助。再根目录下svnroot目录并在这个目录下创建两个大版本库分别为北京项目、天津项目,在这两个项目下

4、建立分支,由于项目名称不能使用中文,请使用project1代表北京项目,使用project2代表天津项目mkdir /svnrootmkdir /svnroot/project1/trunk -pmkdir /svnroot/project1/branchmkdir /svnroot/project1/age mkdir /svnroot/project2 mkdir /svnroot/project2/trunk -pmkdir /svnroot/project2/branchmkdir /svnroot/project2/agels /svnroot/ 总用量 8drwxr-xr-x 2

5、root root 4096 6月 5 17:58 project1drwxr-xr-x 2 root root 4096 6月 5 17:58 project2将这两个大版本库导入到svndata版本库下svn import /svnroot/ file:/development/svndata/ -m "import svndata"增加 /svnroot/project1增加 /svnroot/project1/trunk增加 /svnroot/project1/age增加 /svnroot/project1/branch增加 /svnroot/project2增加

6、/svnroot/project2/trunk增加 /svnroot/project2/age增加 /svnroot/project2/branch提交后的版本为 1。解释一下以上命令的含义Import 为导入命令,将/svnroot目录下的目录导入到svndata版本库下 -m输入日志信息Import的其他用法请使用 svn help import查看具体帮助具体的svndata下生成了那些信息,我这里就不做解释了,我解释的一些相关信息并不全面,想了解具体信息请游览官网查看/我今天只是把这次版本发布svn的搭建过程整理了一份资料方便以后查

7、阅使用,当然了本人并不反对与有爱好的人分享此篇总结。先进入到svndata目录下有一个conf目录,里面存放了svndata版本库的配置文件cd /development/svndata/conf/development/svndata/confls -l总用量 12-rw-r-r- 1 root root 1080 6月 5 17:50 authz-rw-r-r- 1 root root 309 6月 5 17:50 passwd-rw-r-r- 1 root root 2279 6月 5 17:50 svnserve.conf其中svnserver.conf是svn版本库的配置文件,里面包

8、含了认证文件的路径以及匿名用户是否拥有读取权限等操作 passwd文件指定了用户的登录名以及对应的密码信息 authz文件指定了passwd文件中用户的权限为了便于管理,我习惯在/development目录下建立一个存放认证文件的目录名为svnpasswdmkdir /development/svnpasswd修改svnserve.conf文件,在修改之前先备份,备份的目的有两个,一个是便于操作失误能够进行快速还原,另外一个就是改完之后可以对比文件修改了那些地方cp svnserve.conf svnserve.conf.backup开始编辑,过程略,直接看编辑完成之后的结果,此文件的修改配置

9、项必须定格,否则配置错误diff svnserve.conf.backup svnserve.conf12,13c12,13< # anon-access = read< # auth-access = write-> anon-access = none> auth-access = write20c20< # password-db = passwd-> password-db = /development/svnpasswd/passwd27c27< # authz-db = authz-> authz-db = /devdelopment

10、/svnpasswd/authz以<开头的是修改之前的配置项信息以>开头的是修改之后的配置项信息将authz passwd 文件复制到/development/svnpasswd目录下请切换到该目录cp authz passwd /development/svnpasswd/cd /development/svnpasswd/pwd/development/svnpasswd编辑passwd文件定义用户属性,这里的用户分为两个项目组的用户,其中zhangsan、lisi为project1组的成员,有读写权限、liutao、gaoyuanyaun、chenglong为project2

11、组的成员拥有读写权限,admin作为管理员对svndata总版本库拥有rw权限Passwd文件主要定义有哪些用户,格式为 用户名 = 密码 #注意等号两边的空格以及书写必须顶格users#存在# harry = harryssecret# sally = sallyssecretzhangsan = 123456#从这里之后都是添加,前面是用户名,后面是密码lisi = 123456liutao = 123456gaoyuanyuan = 123456chenglong = 123456admin = 123456定义authz文件,定义这些用户的权限,之中这里面有组的概念,可以将多个用户定义

12、一个组,为组定义权限,组内的用户共享这个权限此文件格式定义组的格式为group存在组名 = 用户 多个用户使用逗号进行分隔版本库授权的格式为版本库根目录组名 = 权限用户名 = 权限版本库根目录:/项目目录组名 = 权限用户名 = 权限groupsproject1 = zhangsan,lisiproject2 = liutao,gaoyuanyuan,chenlong/admin = rw/project1project1 = rw/project2project2 = rw * = 启动svn服务svnserve -d -r /development/svndata/检查启动结果,端口号为

13、3690,如果防火墙开启了请建立相关规则svnserve -d -r /development/svndata/netstat -anptlu | grep svntcp 0 0 :3690 :* LISTEN 34834/svnserve iptables -I INPUT -p tcp -dport 3690 -j ACCEPTservice iptables save客户端操作安装客户端软件,软件下载地址安装完成之后,在任意地点创建文件夹名字任意,我在桌面上创建一个文件夹为svndata点击右键会出现一个SVN检出的选项点击一下这里输入svn的路径即可点击确定

14、,之后输入admin的用户信息,否则其他用户不能验证成功,这里介绍一下svn客户端的三种登录方式svn:/ip地址 这种是svn默认的登录方式http:/ip地址 这种是结合了apache实现的 web登录方式https:/ip地址 这种是结合了apache+openssl实现的安全登录方式,.常用于外网svnfile:/ 本地的登录方式,一般在svn服务端本地操作时会用到在创建两个文件夹,一个为peoject1,,一个为project2分别使用这两个项目组的用户登录这是你登录进去就会发现属于project1组的项目就会出现在project1的文件夹中同样project2也是一样到此为止svn

15、的简单部署就完成了,后面呢就介绍如何实现svn实施同步的问题备份思路:利用svn自带的 svnadmin dump命令进行全库备份以及增量备份,之后上传到备份服务器上在备份机上操作useradd rput && passwd rputservice sshd restartntpdate mkdir /backupsetfacl -R -m user:rput:rwx /backup/setfacl -R -m default:user:rput:rwx /back在服务器端操作ntpdate mkdir /backupmkd

16、ir /datassh-keygen -t rsa #后面一路回车即可ssh-copy-id -I /root/.ssh/id_rsa.pub rput7建立全量,增量脚本以下为两个脚本1、 全库备份#!/bin/shSVN_DIR=/development/svndata/ #定义SVN库目录变量SVN_BAK_DIR=/backup/ #定义备份文件存放目录变量NUM1=$(cat /data/jsb_svn_id) #取初始化版本号NUM2=$(svnlook youngest $SVN_DIR) #取当前最新的版本号#开始备份svnadmin dump $SVN_

17、DIR -r $NUM1:$NUM2 -incremental > $SVN_BAK_DIR/whole_bak_$DATE#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份使用if $? -eq 0 ; then echo $NUM2 > /data/jsb_svn_id else echo "backup fail."fi 2、 增量备份#!/bin/shSVN_DIR=/development/svndata/ #定义SVN库目录变量SVN_BAK_DIR=/backup/ #定义备份文件存放目录变量NUM1=$(cat /d

18、ata/jsb_svn_id) #取初始化版本号NUM2=$(svnlook youngest $SVN_DIR) #取当前最新的版本号#开始备份svnadmin dump $SVN_DIR -r $NUM1:$NUM2 -incremental > $SVN_BAK_DIR/ increment_bak_$DATE#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份使用if $? -eq 0 ; then echo $NUM2 > /data/jsb_svn_id else echo "backup fail."fi 在配置计划任务之前请手动执行一次这两个脚本建立计划任务,实现每周日凌晨1点进行一次全库备份,凌晨2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论