SVN服务器搭建

Posted by Simon Dong on 2008-01-28

0x00 环境

  • OS: Debian 9.0
  • Memory: 4GB
  • CPU: 4 core

0x01 安装SVN

1
2
3
4
apt install subversion
#创建仓库
mkdir /opt/svnRepos
svnadmin create /opt/svnRepos/JMCS

目录说明

  • hooks : 放置hooks脚本
  • locks: db和db_logs锁文件目录,追踪存取文件的客户端
  • format: 文本文件,当前版本库的存储格式版本
  • conf: 版本库的配置文件,包含可访问的用户及密码
    • authz: 用户授权文件,对存储库的路径进行权限控制
    • passwd: 用户文件
    • svnserve.conf: 存储库配置文件

配置访问

编辑svnserve.conf

1
2
3
4
5
6
[general]
anon-access = none #匿名用户
auth-access = write #认证用户
password-db = /opt/svnRepos/passwd
authz-db = /opt/svnRepos/authz
realm = Spring SVN Repositoies

添加用户

在/opt/svnRepos目录下创建文件passwd并编辑

1
2
3
#passwd,添加用户admin
[users]
admin = password

配置访问权限

在/opt/svnRepos下创建authz并编辑

1
2
3
4
5
[groups]
admin = admin
[/] #根目录
@admin = rw
* =

authz的格式

1
2
3
[<版本库>:/项目/目录]
@<用户组> = <权限>
<用户> = <权限>

启动svnserve

1
svnserve -d -r /opt/svnRepos

0x02 集成Apache

安装apache

1
2
apt install apache2 apache2-utils
apt install subversion-tools libapache2-mod-svn

更改SVN Repository目录权限

1
2
# www-data是apache的服务启动用户
chown -R www-data:www-data /opt/svnRepos

编辑apache dav_svn.conf

文件位于/etc/apache2/mods-enabled目录下

1
2
3
4
5
6
7
8
9
<location /svn>
DAV svn
SVNParentPath /opt/svnRepos
SVNListParentPath on
AuthType Basic
AuthName "Spring SVN Repositoies"
AuthUserFile /opt/svnRepos/passwd
Require valid-user
</location>

重启apache 服务

service apache2 restart并访问http://<server>/svn

0x03 备份

svnadmin dump

  • 提供全量备份和增量备份,并提供版本恢复机制
  • dump过程较慢,恢复过程也很耗时
  • 不备份passwd和authz
1
2
3
4
#压缩备份
svnadmin dump /opt/svnRepos/JMCS | gzip > ~/jmcs.gz.svn
#增量备份
svnadmin dump /opt/svnRepos/JMCS -r <source_version>:<des_version> --incremental | gzip > ~/jmcs_v1_v2.gz.svn

svnadmin hotcopy

  • 只能全量备份
  • 备份和恢复过程都较快
  • 不备份passwd和authz
1
svnadmin hotcopy /opt/svnRepos/JMCS ~/jmcs.data

svnrdump

  • 远程备份
1
svnrdump http://localhost/svn/JMCS > ~/jmcs.dump

0x04 还原

所有dump文件都可以使用svnadmin load还原

1
2
3
4
#无压缩还原
svnadmin load /opt/svnRepos/JMCS < ~/jmcs.svn
#压缩还原
zcat ~/jmcs.gz.svn | svnadmin load /opt/svnRepos/JMCS

0x05 检出版本

1
svn checkout http://<server>/svn/JMCS --username admin