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 r5开启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库中的文件是否已经更新 |
|