13
Mirror a Subversion repository By Robin Ma [email protected] http://www.validba.net

Subversion备份服务器的创建

Embed Size (px)

DESCRIPTION

 

Citation preview

Mirror a Subversion repository

By Robin [email protected]://www.validba.net

ObjectiveObjective

subversionsubversion 备用服务器的重要性;备用服务器的重要性;

创建创建 subversionsubversion 备用服务器的流程;备用服务器的流程;

svnsyncsvnsync 命令的介绍命令的介绍 ;;

使用使用 svnsyncsvnsync 维护和同步维护和同步 subversionsubversion 备用服务备用服务

器;器;

SubversionSubversion 介绍介绍Subversion 是一个开源的 source version control system, 全球最流行的 SVN 服务器系统;目前由 Apache 组织维护和更新;

Subversion 最新版本下载https://subversion.apache.org/

Subversion 安装参考https://svn.apache.org/repos/asf/subversion/trunk/INSTALL

SubversionSubversion 备用服务器备用服务器Subversion 支持双 svn 服务器之间的数据同步,这样不仅可以实现 svn 的主备服务模式,而且还可以实现简单备份 svn 的目的;

这种同步模式可以是两台 SVN 服务器之间或者是同一物理服务器的不同 repository 之间 ;

Subversion 1.4 版本开始提供了 svnsync 命令实现主备 svn 仓库之间的同步;

Subversion standby Subversion standby 创建流程创建流程

创建 standby svn repository ;standby svn repository 端配置 pre-revprop-pre-revprop-

changechange hook script ;初始化 standby svn repository ;source svn repository 同步数据到 standby

svn repository

Create standby svn repositoryCreate standby svn repository

备用 svn repository 的创建非常简单,跟普通svn repository 创建没有区别:

su – svnadmin( 单独创建的 svn 管理账户,这一步不是必须的 )cd /opt/svnsvnadmin casdeve启动 svn 服务 [svn 服务模式参考安装文档 ]:svnserver –d –r /opt/svn

Standby svn repositoryStandby svn repository 简单配置简单配置默认情况下 ,standby svn 除了同步账号可以写入之外,其他帐号应该只配置只读权限;[svnadmin@devedb conf]$ more authz### This file is an example authorization file for svnserv ……………….[casdeve:/]@dev = radmin = rw* =r..................

authz 文件中,只有 admin[ 同步账号 ] 用户只有读写权限,其他只有只读权限,防止 standby svn repository 在同步模式下被修改。

pre-revprop-change hook scriptpre-revprop-change hook scriptsvnsync 采用” revision” 的方式更新 standby repository 。默认情况下, subversion 不允许” revision” 模式创建或者修改版本仓库。为了实现 revision 的更新模式,必须在 standby 服务器端创建 pre-revprop-change hook 脚本,这个脚本不做任何的操作,只要反回一个有效的状态[casdeve] 为 standby svn repository主目录。

cd /opt/svn/casdeve/hooksecho ‘#!/bin/bash’ > pre-revprop-changeecho ‘exit 0 ‘ >> pre-revprop-changechmod 755 pre-revprop-change

初始化初始化 standby svn repositorystandby svn repository采用 svnsync 命令初始化 standby svn repository 。Master svn:192.168.0.122/casdeveStandby svn:192.168.0.132/casdeve

cd $subversion_home/binsvnsync init svn://192.168.0.122/casdeve svn://192.168.0.132/casdeve

随后要求输入 snv 同步的账号和密码 , 参考前页的配置 [admin] ,这个同步账号必须在主备库都存在。

如果成功初始化提示下面的信息Copied properties for revision 0.

Svnsync Svnsync 主备同步主备同步设置 svnsync 命令同步主备 svn repository 。svnsync sync svn://192.168.0.132/casdeve –username=admin –password=admin

默认情况下要 svnsync 需要用户确认同步,添加 --non-interactive 参数可以实现非交互式 静默同步。 svnsync sync --non-interactive svn://192.168.0.132/casdeve –username=admin –password=admin

可以将这个命令封装在脚本中,利用调度功能实现自动同步。下面为同步多个repository 的脚本封装。

[svnadmin@devedb ~]$ more svnsync.sh#/bin/bashSVN_HOME=/usr/local/subversion$SVN_HOME/bin/svnsync sync --non-interactive svn://192.168.0.132/****data --username=admin --password=****0000$SVN_HOME/bin/svnsync sync --non-interactive svn://192.168.0.132/casdeve --username=admin --password=****0000

调度调度 svnsyncsvnsync 同步同步

[svnadmin@devedb ~]$ crontab -l*/2 * * * * /bin/bash /home/svnadmin/svnsync.sh > /tmp/svnsync.log 2>&1

每两分钟同步一次。

SvnsyncSvnsync 命令简单介绍命令简单介绍Svnsync 命令非常简单 ,目前只有两种功能,前面已经使用到了。[svnadmin@devedb ~]$ svnsync helpgeneral usage: svnsync SUBCOMMAND DEST_URL [ARGS & OPTIONS ...]Type 'svnsync help <subcommand>' for help on a specific subcommand.Type 'svnsync --version' to see the program version and RA modules.

Available subcommands: initialize (init) synchronize (sync) copy-revprops info help (?, h)

SvnsyncSvnsync 命令简单介绍命令简单介绍进一步的命令详细介绍可运行 [svnadmin@devedb ~]$ svnsync help info