SVN的备份与还原

Posted 张侦毅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN的备份与还原相关的知识,希望对你有一定的参考价值。

文章目录

操作环境及相关指令

操作环境

  • 操作系统
[root@master backup]# cat /proc/version
Linux version 5.2.2-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)) #1 SMP Sun Jul 21 04:19:28 EDT 2019
  • SVN软件版本
[root@master conf]# rpm -qa subversion
subversion-1.7.14-14.el7.x86_64

相关指令

防火墙相关指令

  • 查询防火墙状态
systemctl status firewalld
  • 关闭防火墙
systemctl stop firewalld
  • 打开防火墙
systemctl start firewalld

端口号相关指令

  • 查看端口号是否被占用
fuser -v -n tcp [端口号]
  • 防火墙添加端口
firewall-cmd --add-port=[端口号]/tcp
  • 查看防火墙端口列表
firewall-cmd --list-port

SVN相关指令

  • 查看SVN版本号
svnadmin --version
  • 创建仓库
svnadmin create  [仓库名]
  • 创建备份
svnadmin dump [仓库名] > [备份名称].dump
  • 创建还原
svnadmin load [仓库名] < [备份名称].dump
  • 启动SVN
svnserve -d -r [仓库地址]

文件传输

  • 服务器间文件传输
scp xac [用户名]@[目标服务器地址]:[目标路径]

备份与还原

备份

  创建仓库

svnadmin create /var/apps/svn/test

  执行备份

svnadmin dump test > test.dump

  此时生成的test.dump文件就是我们的备份文件

  一般情况下,公司级别的Gitlab备份文件大小最起码也在1G以上,而假如说备份的服务器与需要还原的服务器本身并不是一台服务器,此时就需要我们进行两台服务器间的文件传输,如下:

scp xac [用户名]@[目标服务器地址]:[目标路径]

  上面的用户名指的是目标服务器的用户名,而目标服务器地址就是目标服务器的IP地址,目标路径指的是我们要将文件发送到目标服务器的哪个文件夹路径下。

  当我们点击【Enter】按键后,系统会提示让我们输入目标服务器的密码,正确填写上目标服务器的密码,我们就可以将备份文件发送到目标服务器上的指定目录。

SVN相关配置信息

  SVN的仓库根目录结构如下

[root@master test]# ll
总用量 8
drwxr-xr-x. 2 root root  54 3月   4 15:47 conf
drwxr-sr-x. 6 root root 233 3月   4 15:47 db
-r--r--r--. 1 root root   2 3月   4 15:47 format
drwxr-xr-x. 2 root root 231 3月   4 15:47 hooks
drwxr-xr-x. 2 root root  41 3月   4 15:47 locks
-rw-r--r--. 1 root root 229 3月   4 15:47 README.txt

  其中我们的SVN配置文件就位于conf中,其中的文件如下:

[root@master conf]# ll
总用量 12
-rw-r--r--. 1 root root 1080 3月   4 15:47 authz
-rw-r--r--. 1 root root  309 3月   4 15:47 passwd
-rw-r--r--. 1 root root 3090 3月   4 15:47 svnserve.conf
  • authz配置文件

  authz中配置我们的用户与角色

admin=zhangsan,lisi
[/]
@admin=rw
*=

  其中admin是角色,而zhangsanlisi均是用户名。

  而@admin=rw表示该admin角色可以拥有对SVN根路径的读与写权限。

  • passwd配置文件

  passwd配置用户对应的密码:

[users]
zhangsan=123456
lisi=123456

  上面的意思是,用户zhangsan的访问密码为123456

  • svnserve.conf配置文件

  svnserve.conf配置SVN的权限等信息:

[general]
# 匿名用户拥有读权限
anon-access = read
# 授权用户拥有读与写权限
auth-access = write
# 指定用户密码配置文件
password-db = passwd
# 指定角色用户配置文件
authz-db = authz
# 指定SVN的仓库地址
realm = /var/apps/svn/test

SVN软件安装

  一般情况下,CentOS自身就集成了SVN,其版本信息如下:

[root@master conf]# svnadmin --version
svnadmin,版本 1.7.14 (r1542130)
   编译于 Apr 11 2018,02:40:28

版权所有 (C) 2013 Apache 软件基金会。
此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。
Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。

下列版本库后端(FS) 模块可用: 

* fs_base : 模块只能操作BDB版本库。
* fs_fs : 模块与文本文件(FSFS)版本库一起工作。

  正常情况下,我们直接拿来使用就可以了,但是如果系统本身并没有集成SVN,那么我们可以通过手动安装的方式来安装该软件,如下。

yum -y install subversion-1.7.14-14.el7.x86_64

  启动软件,我们以刚才创建的test软件为例,其启动为:

svnserve -d -r /var/apps/svn/test

还原

注意事项

  重要的事情说三遍,那就是,还原会清空SVN仓库的原有数据,因而谨慎!谨慎!再谨慎!!!

  当我们确定要还原后,我们便可以执行下述还原指令:

svnadmin load test < test.dump

可能操作

  • 查看端口号是否被占用
[root@master svn]# fuser -v -n tcp 3690
                     用户     进程号 权限   命令
3690/tcp:            root      116963 F.... svnserve
  • 终止进程
kill -9 [进程号]

  假如说如果要是在一台服务器上备份,在另外一台服务器中还原,则需要我们将访问的端口号直接暴漏在外网中,也就是说需要将端口号3690暴漏在外网中。

  • 防火墙添加访问端口
firewall-cmd --add-port=3690/tcp
  • 查看防火墙访问端口
[root@master svn]# firewall-cmd --list-port
8083/tcp 10010/tcp 3690/tcp

访问

  打开TortoiseSVN浏览器,在地址栏中输入我们SVN的访问地址,如下:

  在上面弹出的对话框中,输入账号与密码,然后我们就可以正常使用了。

SVN地址重定向

  假如说由于SVN服务器地址出现了变更,在这种情况下,我们要么将以前的文件资源全部重新下载一遍,当然,这种方式并不推荐;要么则是使用SVN地址的重定向功能。

  鼠标在本地SVN资源上,鼠标右键,选择【TortoiseSVN】->【Relocate】,在弹出的对话框中,填写我们的SVN服务器地址,如下:

  点击【OK】按钮,当弹出如下对话框时,此时就说明我们的SVN本地资源的重定向操作已经完成。

以上是关于SVN的备份与还原的主要内容,如果未能解决你的问题,请参考以下文章

svn备份与还原_脚本_(dump命令)

SVN服务器搭建备份以及还原

SVN服务器搭建备份以及还原

SVN服务器搭建备份以及还原

SVN服务器备份

SVN服务器备份