0%

CentOS7搭建SVN服务及备份与恢复

安装SVN

1
yum -y install subversion

创建SVN仓库

先创建仓库目录,用来放仓库文件

1
mkdir -p /usr/local/svn/repo

在上面目录下创建SVN仓库

1
svnadmin create /usr/local/svn/repo

配置SVN

进入SVN配置目录

1
cd /usr/local/svn/repo/conf

配置svnserve.conf

至少有三个地方需要取消注释。

1
2
3
auth-access = write
password-db = passwd
authz-db = authz

配置passwd

比如增加一个admin用户

1
2
3
4
[users]
# harry = harryssecret
# sally = sallyssecret
admin = admin

配置authz

给admin用户设置根目录的读写权限

1
2
[/]
admin = rw

启动SVN服务

1
svnserve -d -r /usr/local/svn/repo/

-d参数是daemon

-r参数是root,也即是仓库的根目录

服务启动后,SVN服务在3690端口进行监听

1
2
ss -tunlp | grep 3690
tcp LISTEN 0 7 *:3690 *:*

SVN备份

全量备份

/usr/local/svn/repo仓库的内容备份到/usr/local/svn-bak/目录下。

1
2
3
4
sudo svnadmin dump /usr/local/svn/repo/ > /usr/local/svn-bak/repobak-all
\* Dumped revision 0.
\* Dumped revision 1.
\* Dumped revision 2.

增量备份

查看svn最新的版本号

1
2
svnlook youngest /usr/local/svn/repo
1

可得知svn的版本号为1。

初始备份

1
2
3
sudo svnadmin dump /usr/local/svn/repo/ -r 0:1 --incremental > /usr/local/svn-bak/repobak0-1
\* Dumped revision 0.
\* Dumped revision 1.

-r参数::,上面例子是0:1,指定备份的开始与结束版本号。

--incremental参数:表示增量备份。

再次备份

下次备份时,查看最新的svn版本号:

1
2
svnlook youngest /usr/local/svn/repo
2

说明这两次备份之间,只更新了一个版本。

执行增量备份:

1
2
sudo svnadmin dump /usr/local/svn/repo/ -r 2:2 --incremental > /usr/local/svn-bak/repobak2-2
\* Dumped revision 2.

恢复

灾难过后,新建svn仓库,如:/usr/local/svn/recovery-repo/

全量恢复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo svnadmin load /usr/local/svn/recovery-repo/ < /usr/local/svn-bak/repobak
```

## 增量恢复

先恢复最早的版本。

```shell
sudo svnadmin load /usr/local/svn/recovery-repo/ < /usr/local/svn-bak/repobak0-1
<<< Started new transaction, based on original revision 1
​ \* adding path : project1 ... done.
​ \* adding path : project1/new ... done.

------- Committed revision 1 >>>

再恢复最近的版本。

1
2
3
4
5
sudo svnadmin load /usr/local/svn/recovery-repo/ < /usr/local/svn-bak/repobak2-2 
<<< Started new transaction, based on original revision 2
​ \* editing path : project1/new ... done.

------- Committed revision 2 >>>

恢复后,设置好密码、权限等配置,启动svnserve服务,就算是恢复完成了。