配色: 字号:
Windows SVN库同步至Linux服务器
2016-10-18 | 阅:  转:  |  分享 
  
Window的SVN库实时同步至Linux的SVN库中Svnadminhotcopy热备份将源库安全的备份到备份库#svnadmin
hotcopypath/to/repopath/to/backup–clean-logs#path/to/repo为源库
路径及库名path/to/backup为备份库路径及库名–clean-logs删除不使用的Berkeleydb日志Svn
sync备份本文中设备:Window笔记本(Lenovoy400)ip:10.16.122.49库d:/Repositori
es/MyRepository01VMware虚拟机(Centos6.7)ip:192.168.193.100库/rep
o/svn/svn-mirror本文做备份采用的SVNServer提供的svnsync命令,这种方式备份其实就是做镜像,备份服务
器上安装SVNServer(SubVersion)即可提供svn服务因为使用的是不同服务器间的同步,所以,靠网络传输时候,如果数
据量巨大,对网络的要求高windows需准备工作:1更改window服务器上的同步库配置文件进入安装SVNServer时配置的的
仓库目录D:\Repositories\MyRepository01\hooks新建post-commit.bat并编辑,加入:s
vnsyncsync--non-interactivehttp://192.168.193.100/svn-mirror
--usernameadmin1--password123456注:参数--non-interactive为非交互模式
username和password为能通过svn认证的用户名和密码192.168.193.100为Linux服务器的ip2打
开注册表(win+rregedit)for32-bitsystem(32位):[HKEY_LOCAL_MACHINE\SOF
TWARE\VisualSVN\VisualSVNServer]添加"CreateGnuTLSCompatibleCertif
icate"=dword:00000001for64-bitsystem(64位):[HKEY_LOCAL_MACHINE\S
OFTWARE\Wow6432Node\VisualSVN\VisualSVNServer]添加"CreateGnuTLSCo
mpatibleCertificate"=dword:00000001window上打开VisualSVNServerMana
ger选择Action(操作)—Properties如下图:直至创建self-signedcertificate结束。注:如果
没有上述的准备的话在linux上执行下面的svnsyncinitfile:////usr/backuprepohttp://
yao-pc/svn/MyRepository01/时候,会报:SSLhandshakefailed:SSL错误:Key
usageviolationincertificatehasbeendetected的错,因为virtualsvn
在生成鉴权数据的时候使用了一个插件,而这个插件是OpenSSL支持的,但GnuTls是不支持Linux服务器端操作1,创建Linu
x用户和用户组(重要)此用户是使用http协议访问svn库的认证用户#groupaddadmin#useraddadmi
n1-gadmin#passwdadmin12,linux服务器中安装SubVersion命令:#yuminstall
subversion#yuminstallmod_dav_svn#为了http协议http://ip/repo访问s
vn库,默认只能svn://ip/repo形式3,创建版本库svn-mirror(随意取名)#mkdir–p/repo/s
vn#创建存放svn库的根目录#svnadmincreate/repo/svn/svn-mirror4将/repo授权给
用户admin1及其组#chown–Radmin1:admin/repo5,配置备份SVN(Linux)的pre-rev
prop-changehook(钩子)#cd/repo/svn/svn-mirror/hooks#cppre-revpr
op-change.tmplpre-revprop-change#chmod+xpre-revprop-change#
vimpre-revprop-change清空并添加如下脚本#!/bin/shUSER="$3"if["$USER"="
admin1"];thenexit0;fiecho"Onlytheadmin1usermaychange
revisionproperties">&2exit1?6,配置备份SVN的start-commithook(可选,但建议
配上)#cpstart-commit.tmplstart-commit#chmod+xstart-commit#v
imstart-commit清空并添加如下脚本#!/bin/shUSER="$2"if["$USER"="admin1"
];thenexit0;fiecho"Onlytheadmin1usermaychangerevisio
nproperties">&2exit1注:建议7,8,9步骤可以先忽略,待至第二部分配置svn的http访问结束后再初始化
和同步以及启动7,初始化备份SVN#svnsyncinitfile:////repo/svn/svn-mirrorhttp
://10.16.122.49/svn/MyRepository01/8,同步版本库#svnsyncsyncfile:///
/repo/svn/svn-mirror9,启动svnserver#svnserve-d-r/repo/svn#/us
r为svn根目录即创建版本仓库svn-mirror的目录参数--listen-port3691可以指定端口默认3690
配置svn的http访问1编辑httpd.conf#vim/etc/httpd/conf/httpd.confServerN
ame?localhost:80?#去掉前面的#号User:admin1#将用户名更改为admin1为了下文root启动
httpd时候用admin1运行Group:admin#将组名更改为admin2编辑subversion.conf配置文件#
vim/etc/httpd/conf.d/subversion.conf增加:DA
VsvnSVNPath/repo/svn/svn-mirror#前文创建的版本库
3添加用户认证在
上一步中浏览器访问时候任何人都可以匿名访问,并且拥有写入,读取,删除权限,这不安全,下面配置用户写入时需认证#mkdir-p
/etc/svn#htpasswd–c/etc/svn/svnusers.confadmin1Newpassword:
Re-typenewpassword:Addingpasswordforuseradmin14修改上文步骤2中配置的
subversion.conf文件:DAVsvnSVNPath/repo/svn/svn
-mirror#库路径#对库的写权限需要用户认证,访问读取时不受限制的PTIONSREPORT>#对所有请求都认证可以去掉LimitExcept标签#使用用户名和密码认证AuthType
Basic#认证对话框中提示信息AuthName"AuthorizationRealm"#认证用户的文件路径Auth
UserFile/etc/svn/svnusers.conf#只有认证正确才能访问svn库Requirevalid-use
r
5开启httpd服务#apachectlstart#root用户启动
浏览器访问http://192.168.193.100/svn-mirror注:svn-mirror为subversion.c
onf中配置的6更改配置/home/admin1/.subversion/server
s#vim/home/admin1/.subversion/servers#将前面的#号放开,并改为yes,为了取消在同步
时候需要互动(手动填写提示信息)store-plaintext-passwords=yes7初始化svn库(Linux上执行)
#su–admin1#svnsyncinithttp://192.168.193.100/svn-mirrorhttp://10.16.122.49/svn/MyRepository01/--usernameadmin1–-password1234568同步svn库#svnsyncsynchttp://192.168.193.100/svn-mirror--usernameadmin1--password123456测试新建任意文件提交至MyRepository01库中,检查svn-mirror库中的文件是否已经更新
献花(0)
+1
(本文系樱梦雪苹宝首藏)