Linux下svn安装配置及备份还原

一.源码安装

  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的配置文件将会成默认的,所以需要重新添加用户权限)

2svnadmin hotcopy热拷贝备份

原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份;

# svnadmin hotcopy  /home/svn/  /home/hotsvnbak

3,Svnsync 主备同步方案

实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。 真实环境使用较少暂且不写这块的。

 


发表评论

登录 后发表评论.