svn备份与恢复心得

上传人:飞*** 文档编号:44969728 上传时间:2018-06-14 格式:DOCX 页数:8 大小:23.79KB
返回 下载 相关 举报
svn备份与恢复心得_第1页
第1页 / 共8页
svn备份与恢复心得_第2页
第2页 / 共8页
svn备份与恢复心得_第3页
第3页 / 共8页
svn备份与恢复心得_第4页
第4页 / 共8页
svn备份与恢复心得_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《svn备份与恢复心得》由会员分享,可在线阅读,更多相关《svn备份与恢复心得(8页珍藏版)》请在金锄头文库上搜索。

1、svnsvn 备份与恢复心得备份与恢复心得SVN 服务器配置Svn 备份与恢复有感今天的主要任务是对 svn 的备份与恢复进行测试,但是测试的过程中, 也出现的一些问题,现在写出来与大家进行分享,希望对大家有所帮助。这里我介绍两种备份方式:完全备份和增量备份。首先进行完全备份的测试,我从网上查的方法进行测试。1. 完全备份最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备 份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库 发生变化,将会造成备份的结果不够准确,失去备份的作用,为此 Subversion 提供了“svnadmin hotcopy”命令,可以防止这种问

2、题。版本库目录结构如下图所示:D:svnroot project1 conf dav db revprops revs transactions hooks locks project2 conf dav db revprops revs transactions hooks locks如果要把 project1 备份到 d:svnrootbak 目录下,只需要运行:svnadmin hotcopy d:svnrootproject1 d:svnrootbakproject1但是如果我们这个目录下有许多版本库,则需要为每个版本库写这样一条语句 备份,为此我写了下面的脚本,实现备份一个目录下的所

3、有版本库。我们在 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_R

4、OOT=“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:checkBackec

5、ho %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:s

6、vnrootbackup.bat 这样在每周五晚上 11:30 都会执行 这个备份过程。当然备份在本机也是不安全的,你也许需要上传到别的机器, 这个就要靠你自己去实现了。出现的问题:1. D:svnrootbak2006-10-22 中是空的。首先查看脚本,看看是不是路径写错了,经检查路径正确。然后运行命令, svnadmin hotcopy d:svnrootproject1 d:svnrootbakproject1 发现 命令不能运行,上网查原来是没设环境变量。下面是设环境变量的步骤:右键我的电脑-属性,在系统属性对话框中选择 “高级”,单击”环境变量”,然后编辑 path 路径,加上 C

7、:Program FilesVisualSVN Serverbin;因为 svn 的命令都包含在这个文件夹下。解决办法:加上路径后,运行正确。2.增量备份尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时, 经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生 问题,该如何呢,这里我们就用到了增量备份。增量备份通常要与完全备份结合使用,就像 oracle 数据库的归档日志,记录着 每次 Subversion 提交的变化,然后在需要恢复时能够回到最新的可用状态。在 我们这个例子中我们使用的是,svnadmin dump 命令进行增量的备份,使用方 法是:svnadmin

8、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 transac

9、tions 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:svn

10、backup.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 开

11、头的三个路径,其他的不需要修改就可以实现 project2 的自动 备份。以上的操作已经 OK 了,现在需要做的是将完全备份和增量备份结合起来,也就 是在完全备份后清理增量备份的结果,使之只保存完全备份后的结果。出现的问题:由于刚开始没搞懂钩子脚本是怎么回事,直接运行的 post- commit.bat,结果连备份文件都没出现,因为钩子脚本是自动运行的。解决办法:在版本库上进行添加或删除操作,结果正确。3.备份恢复检查当果真出现版本库的故障,就要求我们实现版本库的恢复操作了,这是用要使 用 svnadmin load 命令,同时也需要上次的完全备份例如要把上次完全备份 svn_bak,和之后的

12、增量备份 dumpfile:svnadmin load 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要发表评论,请先登录 或 注册没

13、看懂你的意思,说明白点没看懂你的意思,说明白点由 luo 在 星期三, 05/18/2011 - 17:49 发表。没看懂你的意思,说明白点要发表评论,请先登录 或 注册没看明白问题是什么?没看明白问题是什么?由 admin 在 星期一, 05/16/2011 - 08:23 发表。没看明白问题是什么?要发表评论,请先登录 或 注册很好,留个记号很好,留个记号由 q405410663 在 星期四, 04/14/2011 - 10:30 发表。很好,留个记号很好,留个记号要发表评论,请先登录 或 注册很好,留个记号很好,留个记号由 q405410663 在 星期四, 04/14/2011 - 1

14、0:29 发表。很好,留个记号要发表评论,请先登录 或 注册添加到服务命令:添加到服务命令:scsc createcreate svndsvnd由 admin 在 星期一, 11/08/2010 - 21:37 发表。添加到服务命令:sc create svnd binpath= “C:Program FilesSubversionbinsvnserve.exe -service -root D:svnrepos“ displayname= “svna“ depend= tcpip start= auto要发表评论,请先登录 或 注册谢谢,比我在网上找的详细,我去研究研究看谢谢,比我在网上找的详细,我去研究研究看由 c948513665 在 星期六, 10/30/2010 - 16:28 发表。谢谢,比我在网上找的详细,我去研究研究看要发表评论,请先登录 或 注册加油!加油!由 admin 在 星期三, 11/03/2010 - 15:27 发表。加油!要发表评论,请先登录 或 注册写得不错!写得不错!由 admin 在 星期六, 10/30/2010 - 10:59 发表。写得不错!要发表评论,请先登录 或 注册

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号