




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
svn备份与恢复心得 SVN服务器配置Svn备份与恢复有感 今天的主要任务是对svn的备份与恢复进行测试,但是测试的过程中,也出现的一些问题,现在写出来与大家进行分享,希望对大家有所帮助。这里我介绍两种备份方式:完全备份和增量备份。首先进行完全备份的测试,我从网上查的方法进行测试。1. 完全备份 最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadmin hotcopy”命令,可以防止这种问题。版本库目录结构如下图所示:D:svnrootproject1 conf dav db revprops revs transactions hooks locksproject2confdavdb revprops revs transactionshookslocks如果要把project1备份到d:svnrootbak目录下,只需要运行:svnadmin hotcopy d:svnrootproject1 d:svnrootbakproject1但是如果我们这个目录下有许多版本库,则需要为每个版本库写这样一条语句备份,为此我写了下面的脚本,实现备份一个目录下的所有版本库。我们在D:svnroot下创建了两个文件,simpleBackup.bat:echo 正在备份版本库%1.%SVN_HOME%binsvnadmin hotcopy %1 %BACKUP_DIRECTORY%2echo 版本库%1成功备份到了%2!这个文件仅仅是对“svnadmin hotcopy”的包装,然后是backup.bat:echo offset SVN_HOME=C:Program FilesVisualSVN Server/VisualSVN Server的安装路径set SVN_ROOT=D:svnroot/库根目录地址set BACKUP_SVN_ROOT=D:svnrootbak/要备份的地址set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%date:0,10%if exist %BACKUP_DIRECTORY% goto checkBackecho %BACKUP_DIRECTORY%SVN_ROOT%/backup.logmkdir %BACKUP_DIRECTORY%for /r %SVN_ROOT% %I in (.) do if exist %Iconfsvnserve.conf %SVN_ROOT%simplebackup.bat %fI %nIgoto end:checkBackecho %BACKUP_DIRECTORY%goto end:end你在使用的时候,只需要修改backup.bat开头的三个路径,根据以上的配置,你只需要运行backup.bat,就可以把“SVN_ROOT”下的版本库都备份到“BACKUP_SVN_ROOT”里,并且存放在备份所在的目录里,例如“D:svnrootbak2006-10-22”。虽然这部分工作很简单,可是必须有人定时地去执行这个操作(例如每周一凌晨),为了避免发生遗忘的情况,我们可以将这个操作加入到系统的at任务当中去,例如还是上面的环境,为了安装at任务,我们运行:at 11:30/every:F D:svnrootbackup.bat这样在每周五晚上11:30都会执行这个备份过程。当然备份在本机也是不安全的,你也许需要上传到别的机器,这个就要靠你自己去实现了。出现的问题:1. D:svnrootbak2006-10-22中是空的。首先查看脚本,看看是不是路径写错了,经检查路径正确。然后运行命令,svnadmin hotcopy d:svnrootproject1 d:svnrootbakproject1发现命令不能运行,上网查原来是没设环境变量。下面是设环境变量的步骤:右键我的电脑-属性,在系统属性对话框中选择“高级”,单击”环境变量”,然后编辑path路径,加上C:Program FilesVisualSVN Serverbin;因为svn的命令都包含在这个文件夹下。解决办法:加上路径后,运行正确。2.增量备份 尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时,经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生问题,该如何呢,这里我们就用到了增量备份。增量备份通常要与完全备份结合使用,就像oracle数据库的归档日志,记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。在我们这个例子中我们使用的是,svnadmin dump命令进行增量的备份,使用方法是:svnadmin dump project1 -revision 15 -incremental dumpfile2其中project1处要写其所在具体的地址,如D:svn_bak,dumpfile2处要写增量备份的文件夹地址,如D:svnrootbaksvn.dump.上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile2只保存了修订版本15更改的内容。为了记录每次提交的结果,我们需要使用一项Subversion的特性-钩子(hook),看看我们的project1目录:project1 conf dav db revprops revs transactions hooks locks 其中的hooks目录里存放的就是钩子脚本,我们在此处只使用post-commit钩子,这个钩子会在每次提交之后执行,为了实现我们的备份功能,我们在hooks下建立一个文件post-commit.bat,内容如下:echo offset SVN_HOME=C:Program FilesVisualSVN Server/VisualSVN Server的安装路径set SVN_ROOT=D:svnroot/库根目录的地址set DELTA_BACKUP_SVN_ROOT=D:svnrootbak/要复制的地址set LOG_FILE=D:svnbackup.log/生成log文件的地址echo backup revision %2 %LOG_FILE%for /r %SVN_ROOT% %I in (.) do if %SVN_ROOT%nI = %1 %SVN_HOME%binsvnadmin dump %1 -incremental -revision %2 %DELTA_BACKUP_SVN_ROOT%nI.dumpgoto end:end通过这个脚本,可以实现D:svnroot下的版本库提交时自动增量备份到D:svnrootbak(确定这个目录存在),使用的时候只需要修改post-commit.bat开头的三个路径,其他的不需要修改就可以实现project2的自动备份。以上的操作已经OK了,现在需要做的是将完全备份和增量备份结合起来,也就是在完全备份后清理增量备份的结果,使之只保存完全备份后的结果。出现的问题:由于刚开始没搞懂钩子脚本是怎么回事,直接运行的post-commit.bat,结果连备份文件都没出现,因为钩子脚本是自动运行的。解决办法:在版本库上进行添加或删除操作,结果正确。3.备份恢复检查当果真出现版本库的故障,就要求我们实现版本库的恢复操作了,这是用要使用svnadmin load命令,同时也需要上次的完全备份例如要把上次完全备份svn_bak,和之后的增量备份dumpfile:svnadmin load svn_bak的全路径 dumpfile增量备份的全路径例如:svnadmin load E:svn_bak %LOG_FILE%rem 如果文件不存在,则全量备份if not exist %DELTA_BACKUP_SVN_ROOT% goto unexistFile%SVN_HOME%binsvnadmin dump %1 -incremental -revision %2 %DELTA_BACKUP_SVN_ROOT%goto end:unexistFile%SVN_HOME%binsvnadmin dump %1 %DELTA_BACKUP_SVN_ROOT%:end 要发表评论,请先登录 或 注册没看懂你的意思,说明白点由 luo 在 星期三, 05/18/2011 - 17:49 发表。没看懂你的意思,说明白点 要发表评论,请先登录 或 注册没看明白问题是什么?由 admin 在 星期一, 05/16/2011 - 08:23 发表。没看明白问题是什么? 要发表评论,请先登录 或 注册很好,留个记号由 q405410663 在 星期四, 04/14/2011 - 10:30 发表。很好,留个记号 要发表评论,请先登录 或 注册很好,留个记号由 q405410663 在 星期四, 04/14/2011 - 10:29 发表。很好,留个记号 要发表评论,请先登录 或 注册添加到服务命令:sc create svnd由 admin 在 星期一, 11/08/2010 - 21:37 发表。添加到服务命令:sc create svnd binpath= C:Program FilesSubversionbinsvnserve.exe -service -root D:svnrepos displayname= svna depend= tcpip start= auto 要发表评论,请先登录 或 注册谢谢,比我在网上找
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全高工职称评审课件
- 海运销售入门培训课件
- 2024-2025学年北京市西城区第三十九中学下学期七年级期中考试数学试题卷
- 知名男装区域经销代理合同2篇
- 安全驾驶技巧培训内容课件
- 安全驾驶安全培训方案课件
- 海燕课件教学课件
- 2025年湖北二级考试试题及答案
- 桥梁施工劳务合同7篇
- 2026届安徽省淮北市杜集区化学九上期末调研模拟试题含解析
- 【正版授权】 IEC 60512-26-100:2008/AMD1:2011 EN-FR Amendment 1 - Connectors for electronic equipment - Tests and measurements - Part 26-100: Measurement setup,test and reference arrangements and
- 物业投标书样本
- JBT 11699-2013 高处作业吊篮安装、拆卸、使用技术规程
- 屁屁辅助脚本
- 【顺丰集团财务共享中心运作问题与优化建议探析15000字(论文)】
- 中医科室发展规划方案
- 食药环侦知识讲座
- GB/T 19520.21-2023电气和电子设备机械结构482.6 mm(19 in)系列机械结构尺寸第3-109部分:嵌入式计算设备的机箱尺寸
- 纯水管道施工方案
- 山东省海洋知识竞赛(小学组)考试题库大全-上(单选题汇总)
- 一篇入门EPC总承包项目的税务筹划
评论
0/150
提交评论