搭建svn服务
- 检查是否已安装
rpm -qa subversion
- 安装SVN服务器
yum install subversion
验证安装
rpm -qa |grep subversion
- 代码库创建
mkdir -p /var/svn/svnrepos
svnadmin create /var/svn/svnrepos/svn1
执行后,自动建立repositories库,查看/var/svn/svnrepos/svn1文件夹包含了conf,db,format,hooks,locks,README.txt等文件,说明一个SVN库已经建立。
- 配置版本库
- svnserve.conf
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/var/svn/svnrepos
- passwd
[users]
# harry = harryssecret
# sally = sallyssecret
test1=123456
test2=123456
- authz
[group]
g_user=test1,test2
[svn1:/]
test1=rw #给该用户访问所有库的权限
[svn1:/dir2] #给该用户访问目录dir2的权限
test2=rw
[svn1:/]
@g_user=rw
PS:对权限配置文件的修改立即生效,不必重启svn。
- 启动SVN
#注意目录,不包含svn1
svnserve -d -r /var/svn/svnrepos
- 查看SVN进程
ps -ef | grep svn
- 关闭svn
killall svnserve
- 测试SVN的服务器
svn://192.168.33.101/svn1
备份与恢复
- Linux中SVN的备份与恢复
linux中SVN备份有三种方式
- svnadmin dump 是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供版本恢复机制。
缺点是版本数过大,增长到数万以上,那么dump与load过程都将非常慢,耗时长不利于快速进行灾难恢复。在版本数较小的情况下可以使用这种备份方式。 - svnadmin hotcopy 只能进行全量拷贝,不能进行增量备份。优点是备份较快,恢复也快。缺点是比较耗费硬盘。
- svnsync实际是制作2个镜像库,当一个坏了的时候可以迅速切换到另一个。需1.4以上版本支持,这里不讨论。
- svnadmin dump方式
- a、全量备份一个仓库
svnadmin dump /var/svn/svnrepos/svn1 > /svn/svndump/svn.0323.dump
- b、增量备份
svnadmin dump /var/svn/svnrepos/svn1 -r 5200:5600 --incremental > /svn/svndump/svn_5600.0323.dump
# 5200是上次全量备份时的最新版本,5600是当前最新版本。
- 还原
先在新服务器上建立一个空的仓库,然后将备份文件load进新服务器仓库。
svnadmin create /var/svn/svnrepos/svn2
svnadmin load /var/svn/svnrepos/svn2 < /svn/svndump/svn_5600.0323.dump
注意:这中备份方式没有备份配置文件,如果conf目录下的配置我呢见重要的话需要单独备份出来,还原后手动拷贝到新版本库覆盖。
- svnadmin hotcopy方式
- 备份
svnadmin hotcopy /var/svn/svnrepos/svn1 /svn/svndump/svn.0323.back
如果你传递–clean-logs选项,svnadmin会执行热拷贝操作,然后删除不用的Berkeley DB日志文件。
可以在任何时候运行这个命令得到一个版本库的安全拷贝,不管其它进程是否使用这个版本库。
- 还原
svnadmin hotcopy /svn/svndump/svn.0323.back /var/svn/svnrepos/svn2