Answers:
请参阅:http: //www.visualsvn.com/support/topic/00012/
指向以下文档:http :
//www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup
它描述了使用Subversion命令进行备份。我希望这是您已经在做的,因为直接进行目录备份可能会导致存储库不可用。
您应该能够使用Subversion的备份,并使用svnadmin dump
或svnadmin hotcopy
命令来还原整个存储库。但是,与任何备份策略一样,您必须自己测试还原,以确保它对您有用。
从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\bar
到X:\
卷的副本备份:
wbadmin start backup –backupTarget:x: -include:c\foo\bar -vsscopy
(要安装Windows Server Backup,请ocsetup WindowsServerBackup
在提升的命令提示符下运行)。
您可以通过多种方式设置备份:
wbadmin
命令行工具,运行备份时不需要停止服务器的服务,因为FSFS存储库后端始终处于一致状态。
以下是有关恢复Windows Server备份的一般提示:
将备份恢复到一个空目录,以确保恢复的存储库文件不会与损坏的存储库文件混合。如果恢复了存储库,则可以删除损坏的存储库,然后将其替换为恢复的存储库。
从备份中恢复存储库后,停止启动循环服务器。
如果您的客户端在存储库恢复后出现错误,请对其运行svnadmin recover
。该命令立即完成,并使存储库再次可访问。
除存储库外,您还应该备份以下信息:
存储在存储库根目录中的身份验证和授权文件(默认为“ C:\ Repositories”)。根据您的设置,应该有以下文件:'authz','authz-windows'和'htpasswd'。
“%VISUALSVN_SERVER%\ certs \”文件夹,用于存储有关SSL证书的信息。
“%VISUALSVN_SERVER%\ conf \”文件夹,用于存储VisualSVN服务器的配置文件。
存储服务器配置其他部分的“ HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN服务器”注册表项。
备份SVN存储库最简单,最好的方法是使用svnsync。它是一种增量工具,可重放对备份存储库的所有提交。它很容易上手-请参阅此博客文章 -并且它只发送更改就非常快。您将必须设置一个post-rev-prop-change钩子,以捕获某人更新历史revprop时的“极端情况”,但否则,您可以每小时运行一次(就像我一样)以保持备份。如果您真的对数据备份感到疑惑,甚至可以在提交后挂钩中运行它!
如果您的实时存储库已失效,则可以仅“ svn重新定位”到备份存储库,直到您的实时存储库再次运行(尽管要小心,如果在实时存储库关闭时向备份库中写入任何内容,除非运行svnsync来获取这些备份库更改应用于实时回购,当您考虑时会非常明显)。
因此,您可以进行连续备份,并以最少的资源使用量来衡量停机时间(以秒为单位)。备份没有比这更好的了!
另一个选择是hotcopy。它备份了整个存储库。占用更多的磁盘空间,但是使用它非常容易运行,也非常容易还原存储库。
VisualSVN是Windows产品,因此它将在Windows上运行。如果备份实用程序能够使用“卷影复制”进行备份,那么这将产生内部一致的备份。内置的NTBACKUP或第三方软件(如Symantec Backup Exec)或Windows Server 2008内置的基于磁盘的备份工具都可以使用卷影复制。
对于那些只想在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