svn sync : dump
? svn ? ? shell ?    2019-01-11 16:17:34    668    1    0
gua_l   ? svn ? ? shell ?

svnadmin dump --help

dump: usage: svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]]

Dump the contents of filesystem to stdout in a 'dumpfile'
portable format, sending feedback to stderr. Dump revisions
LOWER rev through UPPER rev. If no revisions are given, dump all
revision trees. If only LOWER is given, dump that one revision tree.
If --incremental is passed, the first revision dumped will describe
only the paths changed in that revision; otherwise it will describe
every path present in the repository as of that revision. (In either
case, the second and subsequent revisions, if any, describe only paths
changed in those revisions.)

Valid options:
-r [--revision] ARG : specify revision number ARG (or X:Y range)
--incremental : dump or hotcopy incrementally
--deltas : use deltas in dump output
-q [--quiet] : no progress (only errors) to stderr
-M [--memory-cache-size] ARG : size of the extra in-memory cache in MB used to
minimize redundant operations. Default: 16.
[used for FSFS repositories only]

用法 :svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]]

[-r LOWER[:UPPER] 指定备份一个区间的版本:-r 0:30

[--incremental]] 增量备份一个区间的版本:-r 31:32 --incremental ,加上这个选项,增量备份才能追加在之前的备份上。


在源机上备份:

一般首次备份要先查看最新版本

svnlook youngest repotA

svnadmin dump repotA -r 0:30 >back_0-30

svnadmin dump repotA -r 31:32 >back_31-32 --incremental

back_0-30  back_31-32 这两个文件是dumpfile 格式,需要用svnadmin load 导入。

dumpfile 就是我们拿到的备份文件


在备份机上导入:

初始化版本库

mkdir  repotA

svnadmin create  repotA

并把源机的conf 和hooks 目录拷过来覆盖

svnadmin load repotA <back_0-30

svnadmin load repotA <back_31-32 --incremental

如果增量导版本到非空的版本库,没有加--incremental ,会报 svnadmin: E160020: File already exists: 


 验证备份机的版本

svnserve -d -r /var/svn/svn_dir

访问正常 :svn://newip/repotA 

将原本用的 workcopy 切换成新的机器ip 

svn info

svn switch --relocate  svn://oldip/repotA  svn://x.x.x.x/repotA 

window : 右击-relocate 切换新url


定时使用dump 增量备份

思路: 

1 . 备份目录检查备份库是否已建,否,则新建备份库。

2. 查看备份库最新版本号bak_newest_version,空库是版本号为0。

3. 查看源库最新版本src_newest_version。

4. 相等时无需备份,src_newest_version >bak_newest_version 时,增量备份从bak_newest_version+1 :src_newest_version(或0-src_newest_version)的区间版本,相反则报错检查。

5. 以上增量备份拷备到备份机进行load 。

6. 拷贝覆盖conf 和hook 两个文件夹 (同步用户和权限策略)

7. 验证备份库


计算dump 到 load 的时间:

同一个库的前0-30 的版本(最新版本为3575)

backup Auto_script-0-30 cost: 69s

load Auto_script-0-30 cost: 107s

生成文件大小 : 

原库(3575个版本):666M

备份库(30个版本):567M

dumpfile 文件的大小(30个版本):7.5G

缺点:

可见,使用svnadmin dump 进行备份耗时较大,恢复时比备份用时更长,且dumpfile 格式的中间文件,占用磁盘空间非常大,比原整库svn存储所占的空间大10倍以上。

这种方法不能适用于大版本库,也不能适用于故障时对切换时间要求非常高的版本库。如需要使用,应尽量在每次增量备份后,都及时将增量备份文件load 到备份库,而不是存储大量占空间巨大的dumpfile, 不建议等到故障时再一次性全部load 。

 



 

 

 

Pre: svn 定时自动提交

Next: ubuntu 安装 svn

668
Sign in to leave a comment.
No Leanote account? Sign up now.
0 comments
Table of content