备份Windows VisualSVN版本库的方法有哪些?

在这一刻,我们使用Visual SVN,我们正在备份整个存储库目录的视觉SVN。 这为我们的svn引擎中的每个存储库备份整个数据。 我很好奇,如果我能在紧急情况或灾难的情况下恢复这些文件? 你们中的任何一个有这个恢复程序的经验? 谢谢。

请参阅: http : //www.visualsvn.com/support/topic/00012/

这指向以下文档:
http://www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup

它描述了使用Subversion命令进行备份。 我希望这就是你正在做的事情,因为直接进行目录备份会导致有一个不可用的存储库。

您应该能够使用Subversion中的备份,并使用svnadmin dumpsvnadmin hotcopy命令来恢复完整的存储库。 但是,与任何备份策略一样,您必须自行testing恢复以确保它适合您。

从VisualSVN Server 3.6版开始,服务器包含一个内置的预定库备份和恢复function。 此外,3.6版本还增加了对SVN存储库的定期validation。

为您的Subversion版本库设置排定的资源库备份和validation只需要几分钟。 有关逐步说明,请参阅文章KB106:备份和还原入门 。

如果您查找一次性备份,则可以使用Backup-SvnRepository PowerShell cmdlet。 要恢复存储库,请使用Restore-SvnRepository 。 这些备份cmdlet从版本3.6开始可用。

从主下载页面下载最新版本的VisualSVN Server。

在这里输入图像描述


有几种方法可以备份VisualSVN Server存储库。 检查下面的简短说明。

1. svnadmin hotcopy工具

svnadmin hotcopy允许您创build存储库的安全副本,而不pipe其他进程是否使用存储库。 您可以编写一个自定义脚本,定期对您的存储库进行备份。

你可以考虑从SVN书籍的以下文章了解更多关于Subversion版本库备份: http : //www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup

2. svnsync工具

这是增量备份方法。 增量备份方法仅备份自上一次备份以来更改过的存储库数据部分。 您可以将此工具设置为“主”和“从”,并自动将任何提交复制到其存储库。

有关更多详细信息,请参阅“svnsync”文章: http : //www.visualsvn.com/support/svnbook/ref/svnsync/

3. Windows服务器备份。 您可以使用Windows Server Backup来备份Subversion存储库。 它使您可以备份到networking共享,专用备份卷,可写介质。 例如, wbadmin命令行工具允许您安全地备份您的存储库。 这个简单的命令执行C:\foo\bar的一次性复制备份到X:\ volume:

 wbadmin start backup –backupTarget:x: -include:c\foo\bar -vsscopy 

(要安装Windows Server Backup, ocsetup WindowsServerBackup在提升的命令提示符下运行ocsetup WindowsServerBackup )。

您可以用不同的方式设置备份:

  • wbadmin命令行工具 ,
  • PowerShell cmdlet,适用于自动化和自定义备份操作 ,
  • Windows Server Backup向导 (控制面板,实际上)MMCpipe理单元。

运行备份时不需要停止服务器的服务,因为FSFS存储库后端始终处于一致状态

以下是有关恢复Windows Server备份的一般提示:

  1. 将备份恢复到空目录,以确保恢复的存储库文件不会与损坏的文件混合。 如果存储库恢复后,您可以删除损坏的存储库,然后将其replace为恢复的存储库。

  2. 从备份恢复存储库后,停止启动周期服务器。

  3. 如果您的客户端在恢复存储库后出现错误,请对其执行svnadmin recover 。 该命令立即结束,并使存储库可以再次访问。


除了存储库之外,您应该备份以下几条信息:

  1. 存储在存储库根目录(默认情况下为“C:\存储库” )的身份validation和授权文件。 根据您的设置,应该有以下文件: 'authz''authz-windows''htpasswd'

  2. “%VISUALSVN_SERVER%\ certs \”文件夹,其中存储有关SSL证书的信息。

  3. “%VISUALSVN_SERVER%\ conf \”文件夹,其中存储VisualSVN服务器的configuration文件。

  4. “HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN Server”registry项,其中存储了服务器configuration的其他部分。

我正在做:

 svnadmin dump "c:/Repositories/svnroot" > c:/backup/svnroot_%date%.dump 

你也可以rar /压缩它来节省空间。 当我将SVN从Linux移到VisualSVN时,我使用了相同的方法,所以这个备份工作正常。

备份SVN仓库的最简单也是最好的方法是使用svnsync 。 它是一个增量工具,可将任何提交重放到备份存储库。 它很容易起来 – 看到这篇博客文章 – 它的速度很快,因为它只发送更改。 你将不得不设置一个修改后的prop-change钩子来捕捉有人更新历史版本的“边缘情况”,但除此之外,你可以每小时运行一次(就像我一样),以便不断地进行备份。 你甚至可以在post-commit hook中运行它,如果你真的对数据备份有偏执的话!

如果你的live repo死了,那么你可以“svn relocate”到备份仓库,直到你有一个活着的仓库再次运行(尽pipe如果你在备份中写入任何东西的话,一定要小心,除非你运行svnsync来获得那些对活动回购进行更改,这在您思考时非常明显)。

所以你有持续的备份,并以最less的资源使用,以秒为单位测量停机时间。 备份不会比这更好!

另一个select是hotcopy 。 它将备份整个存储库。 占用更多的磁盘空间,但是非常容易运行,而且使用它也很容易恢复存储库。

VisualSVN是Windows产品,所以它将在Windows上运行。 如果备份实用程序能够使用卷影复制来进行备份,则应该生成内部一致的备份。 内置的NTBACKUP或第三方软件(如Symantec Backup Exec)或内置于Windows Server 2008的基于磁盘的备份工具都可以使用卷影复制。

对于那些只想在Windows系统上默认安装Visual SVN的所有存储库

我使用下面的cmd脚本 – 它将存储库根目录的所有子文件夹转储到备份path,并将它们压缩 。

 @echo off set svnAdminPath="C:\Program Files (x86)\VisualSVN Server\bin" set sevenZipPath="C:\Program Files\7-Zip" set repositoryRoot=d:\Repositories set backupPath=c:\Source\Backup\SVN set dateStamp=%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2% for /f %%f in ('dir /b /AD %%repositoryRoot%%') do ( call:dumpRepository %%f call:zipLastDump ) goto:eof :dumpRepository cd /d %svnAdminPath% set repoPath=%repositoryRoot%/%~1 set dumpFile=%~1_%dateStamp% echo.------------------- echo.Dumping %~1 to %dumpFile%.dump echo.------------------- svnadmin dump "%repoPath%" > "%backupPath%\%dumpFile%.dump" exit /b :zipLastDump cd /d %sevenZipPath% set zipFile="%backupPath%\%dumpFile%.7z" echo.------------------- echo.Zipping %dumpFile%.dump to %zipFile% echo.------------------- 7z a "%zipFile%" "%backupPath%\%dumpFile%.dump" del "%backupPath%\%dumpFile%.dump" exit /b