一.源码安装
SVN可以yum和源代码安装,上面已经写了yum安装,此处将使用源代码实现SNV的安装。具体步骤如下。
1)安装必要的环境
#yum -y groupinstall “Desktop Platform Development ” 安装开发环境
#yum install gcc gcc-c++ 安装gcc环境
2)下载源码并安装
#tar xf subversion-1.6.1.tar.gz
#tar xf subversion-deps-1.6.1.tar.gz
3)编译并安装
#mkdir -pv /usr/local/svnversion
#chown root.root subversion-1.6.1 –R 修改相应的权限
#./configure –prefix=/usr/local/svnversion/ && make && make install
指令简介:configure命令用于检查安装平台和目标特征,prefix用于指定路径。
添加svn的全局环境变量:
#vim /etc/profile/svn.sh 添加下行
export PATH=$PATH:/usr/local/svnversion/bin
#. /etc/profile.d/svn.sh 使其生效
4)测试是否安装成功
# svnserve –version 显示版本信息为安装成功
SVN的配置
SVN采用的是为每一个项目单独建立一个版本库的策略,配置文件,密码文件,和访问控制文件等都放在一个版本库文件的conf目录下,所以每次开始一个新的项目都必须新建一个版本库,并且重新配置文件,还有一条,要求各个组员重新配置客户端,包括服务器版本库路径,本地路径等信息。
1)建立版本库目录(版本库可以建立多个,新建库以后各项都需要重新配置,所以安装的时候要注意区别目录与版本号库目录。一下讲的都是版本库目录)
# mkdir -pv /var/www/svndata/vip
2)新建SVN版本库的文件(与上面目录保持一致)
# svnadmin create /var/www/svndata/vip/
说明:版本库不同于文件夹,直接在操作系统上新建文件无法被SVN识别,必须使用import等命令将文件导入到版本库,该命令为内部命令,仅限于新建版本库。
3)修改版本库我配置文件
#vim svnserve.conf
[general]
anon-access = none 使非授权用户无法访问
auth-access = write 使授权用户有写入权限
password-db = passwd 指明密码文件路径
authz-db = authz 访问控制文件
realm = vip 认证命名空间,subversion会在认证时候提示这里的显示,并且作为凭证缓存的关键字。其他的配置采用默认的配置,各语句都必须顶格,否则会出错。
4)配置用户
#vim passwd 可以添加多个用户,格式为用户 =0020密码。
[users]
test1 = 123456
test2 = 123456
5)配置权限 指令简介:此配置文件采用“基于路径的授权”策略,中括号里指定路径,以下列出对各用户的授权,包括只读r,读写rw,没有列出的用户,则不允许访问,还可以对用户分组。 如:
#vim authz
[groups]
admin = svn
user = test1,test2
[/]
@admin = rw
@user = rw
[vip:/]
@admin = rw
@user = rw
6)使用import导入文件
新建好的版本库是空的,需要导入工作目录。
#svnadmin create /usr/local/svn/newrepos
#svnimport mytree file://usr/local/svn/newrepos/some/project
但是在导入后,用来的目录树并没有转换成工作拷贝,为了开始工作,还是需要运行svn checkout导出一个工作拷贝。因为导入后,文件在版本库中是以特殊的形式存在db文件夹中的,不能以明文的方式查看。必须使用svn checkout导出工作副本才能以正常方式查看。
7)启动服务
# svnserve -d -r /var/www/svndata/vip/ 启动服务
指令简介:-d 是指明以守护模式运行,svn默认在3690端口上监听,3690是默认端口,可以使用“—listen-port”或者“—listen-host=” 来指定其他端口,-r选项用来指定svn服务的根目录,这样用户就可以使用相对的路径访问,而不用提供完整的路径。
使用以下命令可以检查svnserver 。
二.备份还原
Svn备份不宜采用普通的文件拷贝方式,如复制同步命令,这样会备份出来的库大部分不可用,因为SVN有自己特定的存储格式,所以最好是用svn本身提供的功能来备份。
Svn有三种备份方式:
1,svnadmin dump
2,svnadmin hotcopy
3,svnsync
1,Svnadmin dump备份
官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。
参数说明:
-r [–revision ]: 指定的ARG或者范围
–incremental:以增量方式备份
–deltas:在备份中使用差异
-q: 在标准错误输出不显示进度
全量备份:
完全备份svn这个版本库并另存到为fullsvn.bak
# svnadmin dump /home/svn/ | bizp2 >/home/fullsvn.bak
技巧:
# svnadmin dump –deltas /home/svn/ |bzip2 |tee dump.bz2 | md5sum >dump.md5
–deltas意思是消耗更多的cpu资源,但拥有更有效的差异存储办的。
Bzip2 压缩比gzip慢,但是压缩率更好。
Tee方法把压缩的数据流转向到了dump.zip 文件,同时将输出到后者Md5工具摘要计算工具。来确保文件是否备份成功。
# md5sum dump.md5
7d6bac04060726a80527aac4a1ba9283 dump.md5
# md5sum dump.bz2
7d6bac04060726a80527aac4a1ba9283 dump.bz2
该方法恢复文件:
# svnadmin create /home/newsvn
# bzcat dump.bz2 | svnadmin load /home/newsvn/
增量备份:
把增量的版本库
# svnadmin dump /home/svn/ -r 23 –incremental >/home/fullsvn.bak
Svnadmin dump还原
# svnadmin create /home/newsvn 创建新的svn库
# svnadmin load /home/newsvn/ < fullsvn.bak 把full备份是全量库还原回去(还原之后svn的配置文件将会成默认的,所以需要重新添加用户权限)
2,svnadmin hotcopy热拷贝备份
原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份;
# svnadmin hotcopy /home/svn/ /home/hotsvnbak
3,Svnsync 主备同步方案
实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。 真实环境使用较少暂且不写这块的。