Subversion svnadmin dump

gua · 2018年10月16日 · 7 次阅读

http://blog.leanote.com/post/gua_l/svn-sync-dump

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 . 备份目录检查备份库是否已建,否,则新建备份库。

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

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

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

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

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

  6. 验证备份库

计算 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 。



暂无回复。
需要 登录 后方可回复。