有什么方法可以备份Windows VisualSVN的存储库?


15

目前,我们正在使用Visual SVN,并且正在备份Visual SVN的整个存储库目录。这将备份svn引擎中每个存储库的全部数据。我很好奇在紧急情况或灾难下是否能够恢复这些文件?你们中有人有使用此还原程序的经验吗?谢谢。


1
如果您尚未实际测试还原,则您可能对备份没有信心。
迈克尔·汉普顿

Answers:


11

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

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

它描述了使用Subversion命令进行备份。我希望这是您已经在做的,因为直接进行目录备份可能会导致存储库不可用。

您应该能够使用Subversion的备份,并使用svnadmin dumpsvnadmin hotcopy命令来还原整个存储库。但是,与任何备份策略一样,您必须自己测试还原,以确保它对您有用。


8

从VisualSVN Server 3.6版本开始,该服务器包含内置的计划存储库备份和还原功能。此外,3.6版本增加了对SVN存储库的计划验证。

为您的Subversion存储库设置计划的存储库备份和验证仅需几分钟。有关分步说明,请参阅文章KB106:备份和还原入门

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

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

在此处输入图片说明


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

1. svnadmin hotcopy工具

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

您可以考虑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存储库。它使您可以将备份分配到网络共享,专用备份卷,可写媒体。例如,wbadmin命令行工具可让您安全地备份存储库。这个简单的命令执行一次C:\foo\barX:\卷的副本备份:

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

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

您可以通过多种方式设置备份:

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

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

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

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

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


除存储库外,您还应该备份以下信息:

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

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

  3. “%VISUALSVN_SERVER%\ conf \”文件夹,用于存储VisualSVN服务器的配置文件。

  4. 存储服务器配置其他部分的“ HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN服务器”注册表项。


1
对于您的最后一个选择,您必须停止svn服务,否则,您有可能在存在活动提交的情况下备份存储库,从而使备份损坏。
安迪

5

我这样做是:

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

您也可以rar / zip压缩以节省空间。当我将SVN从Linux移到VisualSVN时,我使用的是相同的方法,因此此备份可以正常工作。


3

备份SVN存储库最简单,最好的方法是使用svnsync。它是一种增量工具,可重放对备份存储库的所有提交。它很容易上手-请参阅此博客文章 -并且它只发送更改就非常快。您将必须设置一个post-rev-prop-change钩子,以捕获某人更新历史revprop时的“极端情况”,但否则,您可以每小时运行一次(就像我一样)以保持备份。如果您真的对数据备份感到疑惑,甚至可以在提交后挂钩中运行它!

如果您的实时存储库已失效,则可以仅“ svn重新定位”到备份存储库,直到您的实时存储库再次运行(尽管要小心,如果在实时存储库关闭时向备份库中写入任何内容,除非运行svnsync来获取这些备份库更改应用于实时回购,当您考虑时会非常明显)。

因此,您可以进行连续备份,并以最少的资源使用量来衡量停机时间(以秒为单位)。备份没有比这更好的了!


3

另一个选择是hotcopy。它备份了整个存储库。占用更多的磁盘空间,但是使用它非常容易运行,也非常容易还原存储库。


2

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


这不会在事务上听起来不错。您需要让服务器以一种或另一种方式进行备份,就像对任何数据库进行备份一样。
David Heffernan

对于SQL Server,基于VSS的备份实际上在事务上是安全的。对于VisualSVN服务器,人们希望作为基于Windows的服务器,当通过标准Windows备份解决方案之一进行备份时,它会像SQL Server一样正确运行。我没有证据表明是否这样做。
蒂姆·隆

我对此表示怀疑。VisualSVN只是svn打包了。我从未见过任何迹象表明它具有与VSS集成的备份。
David Heffernan

0

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

我使用以下cmd脚本-将存储库根目录的所有子文件夹转储到备份路径,然后7-zip压缩它们。

@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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.