一、前言
svnadmin是svn server的一个管理工具,本质是一个命令集,包含create、dump、load等子命令,此博文主要是为了记录总结SVN相关命令和SVN的备份还原操作。通过SVN命令可以更加灵活的实现我们的SVN备份需求。博文实验环境说明:
- 操作系统:centos7.6
- SVN server版本:1.7.14
二、svnadmin常用命令
0、获取命令或者子命令帮助
[svn@s146 svn]$ svnadmin --help
general usage: svnadmin SUBCOMMAND REPOS_PATH [ARGS & OPTIONS …]
…
[svn@s146 svn]$ svnadmin help create
create: usage: svnadmin create REPOS_PATH
1、创建一个版本库
[svn@s146 svn]$ svnadmin create repos2
[svn@s146 svn]$ ll
total 0
drwxrwxr-x. 6 svn svn 86 Feb 10 14:49 repos
drwxrwxr-x. 6 svn svn 86 Feb 15 11:05 repos2
#命令行下创建svn账户和授权见博文Linux之YUM方式安装SVN
2、验证版本库保存的数据
[svn@s146 svn]$ svnadmin verify /home/svn/svn/repos2
- Verified revision 0.
- Verified revision 1.
- Verified revision 2.
3、dump备份
#svnadmin dump ― 将文件系统的内容转储到标准输出
[root@s146 tmp]# svnadmin dump -q /home/svn/svn/repos2/ > repos2.`date +%y%m%d%H%M%S`.dmp
#全量备份
[root@s146 tmp]# svnadmin dump -q --deltas --incremental -r 4:4 /home/svn/svn/repos2/ > repos2.deltas.inc.`date +%y%m%d%H%M%S`.dmp
#使用–deltas方式备份,需要更多CPU资源,备份速度更快,这个选项导致svnadmin dump不会保留修改文件的所有内容,而只是记录修改的部分,转储的文件会小一些。
[root@s146 tmp]# svnadmin dump -q --deltas --incremental /home/svn/svn/repos2/ > repos2.deltas.inc.`date +%y%m%d%H%M%S`.dmp
#使用–incremental参数进行增量备份,需要指定增量备份的版本范围,默认备份从0版本开始,相当于是全量备份。
4、hotcopy热备份
[svn@s146 svn]$ svnadmin hotcopy /home/svn/svn/repos2/ /tmp/repos2bak
#hotcopy热备份相当于是进行一份版本库的拷贝,速度比dump快很多。恢复也很快,如果备机已经安装了svn简单配置后可以使用。
5、recover将版本库数据库恢复到稳定状态
[svn@s146 repos2]$ svnadmin recover /home/svn/svn/repos2/
Repository lock acquired.
Please wait; recovering the repository may take some time…
Recovery completed.
The latest repos revision is 4.
6、load恢复转储备份文件
1)、首先清空版本库方式模拟svn发生灾难。
2)、svnadmin load命令恢复版本库。
7、lstxns打印所有未提交的事物名称
[svn@s146 repos2]$ svnadmin lstxns /home/svn/svn/repos
8、rmtxns从版本库删除事物
[svn@s146 repos2]$ svnadmin rmtxns /home/svn/svn/repos `svnadmin lstxns /home/svn/svn/repos`