SVN管家SVN备份恢复同步存储等日常管理svn存储结构.docx
《SVN管家SVN备份恢复同步存储等日常管理svn存储结构.docx》由会员分享,可在线阅读,更多相关《SVN管家SVN备份恢复同步存储等日常管理svn存储结构.docx(13页珍藏版)》请在冰豆网上搜索。
SVN管家SVN备份恢复同步存储等日常管理svn存储结构
SVN管家、SVN备份恢复&同步存储等日常管理、svn存储结构
SVN管家(linux版本)项目
由admin于星期二,02/14/2012-17:
36发表
项目讨论区
SVN管家是SVN俱乐部的基于apache+svn研发的产品,该产品只要安装apache就可运行。
SVN管家有用户注册,用户中心(包含用户修改密码,用户查看自己权限等),管理中心(创建、删除版本库,创建用户、修改用户密码,设置用户权限,基于版本库级和基于目录级的权限设置,版本库备份与恢复,计划备份等等功能)。
程序下载:
svn管家(linux版本)2.1
安装方法:
1.首先你得在你的机器上配置好apache和svn,注意要配置成多库的方式, 建议使用YUM安装, 你的linux要支持中文. 可以参考文档进行配置:
svn_apache_yum_安装配置;
2.解压安装包:
svngj2.x.tar.gz;
tarxzvfsvngj2.x.tar.gz
chown-Rapache:
apachesvngj2.1
3.把目录svngj_cgi拷贝到apache的cgi-bin目录里,并把目录svngj_cgi重命名为svngj;
cp-prsvngj_cgi/var/www/cgi-bin/
mv/var/www/cgi-bin/svngj_cgi/var/www/cgi-bin/svngj
4.把目录svngj_html拷贝到apache的html(htdocs)目录,并把目录svngj_html重命名为svngj;
cp-prsvngj_html/var/www/html
mv/var/www/html/svngj_html/var/www/html/svngj
5.配置svn管家的配置文件/var/www/cgi-bin/svngj/svngj.conf里的httpdconf(apache的配置文件),svnadmin(svn的管理命令);
httpdconf=/etc/httpd/conf/httpd.conf
svnadmin=/usr/bin/svnadmin
6.把svn管家的文件的所属用户改成apache运行的用户,让apache用户可读写该目录;
chown-Rapache.apache/var/www/cgi-bin/svngj
chown-Rapache.apache/var/www/html/svngj
7.把svn的用户文件和权限文件的所属用户改成apache运行的用户;
chownapache.apache /svn/userfile
chownapache.apache /svn/accessfile
8.配置完毕,现在您可以通过http:
//ip/svngj来访问svn管家了. 另外,文件/var/www/html/svngj/index.html件只是起引导作用,否则,比如你访问注册页面时,需输入:
http:
//ip/cgi-bin/svngj/register.html.
附:
所用到的apache配置文件里(比如:
/etc/httpd/conf/httpd.conf)的对应项解读:
1) apache的cgi-bin目录
ScriptAlias/cgi-bin/"/var/www/cgi-bin/"
2) apache的html目录
DocumentRoot"/var/www/html"
3) apache运行的用户和用户组
Userapache
Groupapache
4) svn的管理命令svnadmin
如果是yum安装的话,通常是:
/usr/bin/svnadmin, 源码安装的在svn安装目录的bin目录下面.
系统支持:
Apache2.2+,Subversion1.6+,centos5.x,otherlinux。
初始管理员帐号:
admin/admin
测试入口:
SVN管家(Windows版本)项目
由admin于星期五,06/03/2011-13:
42发表
项目讨论区
SVN管家是SVN俱乐部的基于apache+svn研发的产品,该产品只要安装apache就可运行。
SVN管家有用户注册,用户中心(包含用户修改密码,用户查看自己权限等),管理中心(创建、删除版本库,创建用户、修改用户密码,设置用户权限,基于版本库级和基于目录级的权限设置,版本库备份与恢复,计划备份等等功能),还可以自动在线升级。
安装方法(安装过程中遇到任何问题请联系:
QQ:
1474770592;email:
svnclub@):
注意:
如果您是安装VisualSVNServer的(svn管家需V2.3以上版本),请先参考文档“SVN管家与VisualSVNServer完美结合”。
1.首先你得在你的机器上配置好apache和svn,注意要配置成多库的方式。
可以参考安装包里的文档进行配置:
svn和apache的安装与配置.txt;
2.将当前目录下的压缩包:
svn管家_Win_V1.0.rar解压到apache2.2的安装目录,我这里apache的安装路径是:
C:
\ProgramFiles\ApacheSoftwareFoundation\Apache2.2;
3.解压缩时会提示是否覆盖已存在的index.html,选择“是”。
这个主要是为了方便访问(URL不用输很长),没有其它作用;
4.确保SVN的安装路径的bin路径在环境变量里头,否则SVN管家的一些功能会不起作用。
我这里SVN的bin路径是:
C:
\ProgramFiles\Subversion\bin;
环境变量查看(设置):
右键“我的电脑”-属性-高级-环境变量-系统变量-Path
5.在浏览器里输入:
http:
//ip就进入到svn管家了,现在就可以正式用了!
!
程序下载:
svn管家版本下载地址升级内容
2.3下载
1、与VisualSVNServer完美结合;
2、修改若干读取权限文件的BUG。
2.2下载
1、完全支持中文目录权限设置。
在管理后台点击“权限管理”系统会自动将权限控制文件转为UTF-8无bom格式,不再需要借助EditPlus、UltraEdit等编辑器转换。
2.1下载
1、增加用户备注功能,提高帐号的辨识度,利于管理员进行管理;
2、增加注册用户自定制设置;
3.支持中文目录权限设置;
4.修改登陆首页,增加网页直接登陆svn服务器功能。
2.0下载
1、增加注册用户功能;
2、支持Windows7系统;
3、修复若干BUG。
系统支持:
Apache2.2+,Subversion1.6+,Windows2000/2003/XP。
初始管理员帐号:
admin/admin
页面浏览:
svn管家首页:
用户注册页面:
用户登陆页面:
用户中心:
管理员登陆页面:
管理中心:
SVN备份恢复同步存储等日常管理
svn存储结构
#ls/svn/Repository/
confdavdbformathookslocks
注解:
conf包含库配置文件的目录;
dav提供给Apache和mod_dav_svn使用
db版本数据存储目录
format存储一个整数的文件,此整数代表库层次结构版本
hooks版本库勾子版本
locks存储库锁目录,用来跟踪库的访问者
db目录下fs-type目录不能删除,记录库的存储系统;而revprops目录记录版本属性;revs才是版本存储的实际目录;uuid为库的唯一标识号;txn-current记录当前事务;
所有这些目录中,db、format、locks、fs-type、revs、uuid、revprops目录及文件必须完整才能正常显示版本,如果revs中的版本意外删除,可以从hot-copy备份库中直接拷贝过来而不会损坏数据;也可以从镜像库拷贝恢复(实际操作中还是有数据损坏,镜像库和源库中还是有些许差异);
其中revs下面是以目录组织的版本结构,如../0,../0/1../0/2../0/3,每1000个版本组成一个目录,每个版本自成一个文件,文件名即为commit后生成的版本号;即使删除掉部分版本也不会影响版本库的读取和显示;但是基础版本丢失会使版本库无法访问;
备份svn存储库
#压缩备份
svnadmindump/home/workhome/svn/repository|gzip>~/repository-backup.gz
#不压缩备份
svnadmindump/home/workhome/svn/repository>~/repository-backup.svn
恢复svn存储库
#建立新的svn存储库
svnadmincreate/home/workhome/svn/newrepository
#确认成功与否
ls-l/home/workhome/svn/newrepository
#导入存储库数据
svnadminload/home/workhome/svn/newrepository<~/repository-backup.svn
其他
svnadminrecover—将版本库数据库恢复到稳定状态
svnadminrecover/home/workhome/svn/newrepository
删除存储库中无用的日志文件
svnadminlist-unused-dblogs/home/workhome/svn/newrepository/|xargsrm-vf
删除存储库中所有剩余的共享内存文件
rm-f/home/workhome/svn/newrepository/db/_db.0*
实现svnsync
实现svnsync的唯一的前提条件是创建一个希望镜像的版本库,一旦创建,你就可以按照下面步骤继续。
Step1:
创建镜像Repository(要与主Repository名字相同)
svnadmincreateMIRROR_REPO_PATH
Step2:
设置镜像版本库只对同步用户可写
svnsyncsynchronize-h
synchronize(sync):
usage:
svnsyncsynchronizeDEST_URL
Transferallpendingrevisionstothedestinationfromthesourcewithwhichitwasinitialized.
Validoptions:
--non-interactive:
donointeractiveprompting
--no-auth-cache:
donotcacheauthenticationtokens
--usernameARG:
specifyausernameARG(deprecated;see--source-usernameand--sync-username)
--passwordARG:
specifyapasswordARG(deprecated;see--source-passwordand--sync-password)
--source-usernameARG:
connecttosourcerepositorywithusernameARG
--source-passwordARG:
connecttosourcerepositorywithpasswordARG
--sync-usernameARG:
connecttosyncrepositorywithusernameARG
--sync-passwordARG:
connecttosyncrepositorywithpasswordARG
--config-dirARG:
readuserconfigurationfilesfromdirectoryARG
-q[--quiet]:
printaslittleaspossible
这句意思是不是同步用户可以主Repository和镜像Repository都设成一样。
待实践
为了让镜像版本库只被同步用户写,我们的例子里用户名是”svnsync”,我们有一些选项,一个就是使用Subversion的授权功能设置缺省的访问规则:
[/]
*=r
svnsync=rw
另一个选项就是使用start-commit(MIRROR_REPO_PATH/hooks下)检查svnsync用户,下面是一个例子,是shell脚本:
#!
/bin/sh
USER=”$2″
if[“$USER”=“svnsync”];
thenexit0
fi
echo“Onlythesyncuserusermaycommitnewrevisionsasthisisaread-only,mirrorrepository.”>&2
exit1
Step3:
让镜像版本库使用同步用户修改修订版本属性
为此,我们需要创建一个pre-revprop-change(MIRROR_REPO_PATH/hooks下)钩子,类似于下面的例子,也是shell脚本:
#!
/bin/sh
USER=”$3″
if[“$USER”=“svnsync”];
thenexit0;
fi
echo“Onlythesyncuserusermaychangerevisionpropertiesasthisisaread-only,mirrorrepository.”>&2
exit1
Step4:
注册同步的镜像版本库
在任何平台使用下面的svnsync命令:
svnsyncinitializeURL_TO_MIRROR_REPOURL_TO_MASTER_REPO--username=svnsync--password=svnsyncpassword
如果所有的配置正确,你一定会看到下面的输出:
Copiedpropertiesforrevision0.
现在你已经注册了镜像版本库与主版本库的同步,我们必须继续执行初始的同步,这样镜像版本库才和主版本库是一样的了。
Step5:
执行初始同步
为了确定所有事情已经准备好了,并且执行初始同步,在任何系统只需要执行:
svnsyncsynchronizeURL_TO_MIRROR_REPO--username=svnsync--password=svnsyncpassword
如果所有的同步正确,你会看到类似的输出:
Committedrevision1.
Copiedpropertiesforrevision1.
Committedrevision2.
Copiedpropertiesforrevision2.
Committedrevision3.
Copiedpropertiesforrevision3.…
Step6:
使用post-commit(MASTER_REPO_PATH/hooks下)钩子自动同步
根据初始同步的输出,我们现在要做的就是写一个定时执行或post-commit钩子来同步镜像版本库,我建议post-commit,因为它让你的镜像版本库尽可能的最新,下面是可以用在主版本库上同步镜像版本库的post-commit钩子,一个shell脚本:
#Exampleforsynchronizingonerepositoryfromthepost-commithook
#!
/bin/sh
svnsyncsynchronizeURL_TO_MIRROR_REPO-username=svnsync-password=svnsyncpassword&
exit0
注:
上述钩子脚本需用chmod755使之可运行。
TortoiseSVN使用
svn版本还原
1.推荐的一种方法是,直接export一个你需要的版本,然后用你export的版本覆盖你的最新的版本,这样你就可以不丢失你新建的文件,同时获得最新的SVN版本控制。
操作步骤:
TortoiseSVN→Showlog→选中需要回滚的版本→右键→Export。
之后将修改的文件覆盖到你的最新版本,commit即可。
2.若是你编辑了工程,在没有提交的前提下,你想放弃这些修改,你可以直接选择TortoiseSVN→revert就可以更新到工程的最新的版本。
3.若是你想退回到某一个版本,你就可以直接选择TortoiseSVN→updatetoreversion,这样我们就可以把我们的版本回退到你选中的版本去,这种情况下SVN并没有显示出有什么冲突,并且新建立的文件也还在,但是在这种情况下你并不能直接在你回退后的版本上进行编辑,因为SVN的版本控制还是在最新的主干上。
我们需要update并解决冲突。
4.你可以直接选择revertchangesfromthisrevision,这样的话你可以直接解决冲突并提交。
不过这种方法的不足是,你新建的文件都没有了,整个工程都回退到之前的版本了。
5.可以从日志中回滚到你需要的版本,从日志中选中你需要的版本,然后Updateitemtoreversion就好了,这种情况下SVN并没有显示出有什么冲突,并且新建立的文件也还在,但是在这种情况下你并不能直接在你回退后的版本上进行编辑,因为SVN的版本控制还是在最新的主干上。
我们需要update并解决冲突。