VisualSVNServer Use And BackUp

发布时间 : 星期一 文章VisualSVNServer Use And BackUp更新完毕开始阅读

\goto end :checkBack

echo 备份目录oCKUP_DIRECTORY%已经存在,请清空。 goto end :end

使用的时候,只需要修改backup.bat开头的三个路径,将两个脚本拷贝到"svn_root\下就可以了.根据以上的配置,你只需要运行backup.bat.就可以把"svn_root\下的版本库都备份到"backup_svn_root\里,并且存放在备份所在的目录里.

2,增量备份.

尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大的时候,经常进行完全备份是不现实的,也并不必要,但是一量版本库在备份之间发生问题该如何呢,我们就用到了增量备份.

增量备份通常要与完全备份结合使用,记录着每次subversion提交的变化,然后在需要恢复时能够回到最新的可用状态.

我拉使用的是,svnadmin dump 命令进行增量的备份,使用方法是: svnadmin dump d:/sourcecode/project1 --revision 15 --incremental > d:/sourcecode/dumpfile

上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile只保存了修订版本15更改的内容 恢复增量备份时,使用方法是:

svnadmin load d:/sourcecode/project1 < d:/sourcecode/dumpfile 上面的命令实现了对增量备份文件恢复到版本库project1中 使用钩子脚本Hooks实现自动增量备份: 1) 建立deltabackup.bat文件,内容为: @echo 正在备份版本库%2......

%SVN_HOME%/bin/svnadmin dump %SVN_ROOT%/%1 --incremental --revision %2 >> TLTA_BACKUP_SVN_ROOT%/%1.dump

@echo 版本库%2成功备份到了%3! 2) 建立post-commit.bat文件,内容为: echo off

set SVN_HOME=\set SVN_ROOT=D:/svnroot set UNIX_SVN_ROOT=D:/svnroot

set DELTA_BACKUP_SVN_ROOT=D:/svnrootbak/delta set LOG_FILE=%1/backup.log

echo backup revision %2 >> %LOG_FILE%

for /r %SVN_ROOT% %%I in (.) do if D:/svnroot/%%~nI == %1 %SVN_ROOT%/%%~nI/hooks/deltaBackup.bat %%~nI %2 goto end :end

3) 把以上两个脚本可以直接拷贝到版本库的hooks目录下,就可以实现版本库的自动备份。 3. 同步版本库:

同步机制,可以实现一个版本库同另一个版本库的同步(但好像只是单向的),我们可以用来实现版本库的备份或镜像。 例如:同步版本库d:/sourcecode/project1 1) 新建一个空的版本库project2 运行命令:

svnadmin create d:/sourcecode/project2

2) 为新的版本库创建pre-revprop-change钩子脚本(hook scrīpt)

在d:/sourcecode/project2/hooks目录下新建一个空的pre-revprop-change.bat文件 3) 初始化版本库 运行命令:

svnsync init file:///d:/sourcecode/project2 file:///d:/sourcecode/project1 4) 同步版本库 运行命令:

svnsync sync file:///d:/sourcecode/project2

5) 至此,版本库同步已经完成。

在使用新的版本库之前,还需要根据需要对版本库的访问权限等进行配置。 使用钩子脚本Hooks实现自动同步: 1) 建立post-commit.bat文件,内容为: echo off

set SVN_HOME=\

%SVN_HOME%/bin/svnsync sync --non-interactive svn://localhost/project2 2) 把post-commit.bat文件放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步

SVN完全备份,增量备份,库同步

完全备份

最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadmin hotcopy”命令,可以防止这种问题。 还记得我们的版本库目录吗? 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:/svnroot/project1 d:/svnrootbak/project1

2, 增量备份

尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时,经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生问题,该如何呢,这里我们就用到了增量备份。

增量备份通常要与完全备份结合使用,就像oracle数据库的归档日志,记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。在我们这个例子中我们使用的是,svnadmin dump命令进行增量的备份,使用方法是: svnadmin dump project1 --revision 15 --incremental > dumpfile2

上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile2只保存了修订版本15更改的内容。

为了记录每次提交的结果,我们需要使用一项Subversion的特性--钩子(hook),看看我们的project1目录: ├─project1 │ ├─conf │ ├─dav │ ├─db │ │ ├─revprops │ │ ├─revs │ │ └─transactions │ ├─hooks │ └─locks

联系合同范文客服:xxxxx#qq.com(#替换为@)