3. Windows 服务器备份。您可以使用 Windows Server Backup 备份 Subversion 存储库。它允许您将备份调度到网络共享、专用备份卷、可写媒体。例如,wbadmin命令行工具允许您安全地备份您的存储库。C:\foo\bar这个简单的命令执行到X:\卷的一次性复制备份:
VisualSVN 是一个 Windows 产品,因此它将在 Windows 上运行。如果备份实用程序能够使用卷影复制进行备份,那么应该会生成内部一致的备份。内置的 NTBACKUP 或第三方软件(如 Symantec Backup Exec)或内置于 Windows Server 2008 中的基于磁盘的备份工具都能够使用卷影复制。
@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
请参阅: http: //www.visualsvn.com/support/topic/00012/
这指向以下文档: http:
//www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup
它描述了使用 Subversion 命令进行备份。我希望这是您已经在做的事情,因为直接备份目录可能会导致存储库无法使用。
您应该能够使用来自 Subversion 的备份并使用
svnadmin dump
orsvnadmin hotcopy
命令来恢复完整的存储库。但是,与任何备份策略一样,您必须自己测试恢复以确保它适合您。从 VisualSVN Server 3.6 版本开始,该服务器包括一个内置的计划存储库备份和恢复功能。此外,3.6 版本增加了 SVN 存储库的预定验证。
为您的 Subversion 存储库设置计划的存储库备份和验证只需几分钟。有关分步说明,请参阅文章KB106:备份和还原入门。
如果您要查找一次性备份,可以使用 Backup-SvnRepository PowerShell cmdlet。要恢复存储库,请使用Restore-SvnRepository。这些备份 cmdlet 从版本 3.6 开始可用。
从主下载页面下载最新版本的 VisualSVN 服务器。
有几种方法可以备份 VisualSVN 服务器存储库。检查下面的简短描述。
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:\
卷的一次性复制备份:(要安装 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 Server" 注册表项,存储服务器配置的其他部分。
我这样做是:
您也可以对其进行 rar/zip 压缩以节省空间。当我将 SVN 从 Linux 移动到 VisualSVN 时,我使用了相同的方法,所以这个备份可以正常工作。
备份 SVN 存储库的最简单和最好的方法是使用svnsync。它是一个增量工具,可以重放对备份存储库的任何提交。它很容易上手——请参阅这篇博文——而且它的速度很快,因为它只发送更改。您将必须设置一个 post-rev-prop-change 挂钩来捕捉有人更新历史 revprop 的“边缘情况”,否则您可以每小时运行一次(就像我一样)以持续保持备份。如果您对数据备份真的很偏执,您甚至可以在 post-commit 挂钩中运行它!
如果您的实时存储库死了,那么您可以“svn relocate”到备份存储库,直到您的实时存储库再次运行(但是,如果您在实时存储库关闭时将任何内容写入备份,请小心,除非您运行 svnsync 来获取那些应用于实时存储库的更改,当您考虑它时,这一点非常明显)。
因此,您有连续的备份,并且使用它以最少的资源使用量以秒为单位测量停机时间。备份没有比这更好的了!
另一种选择是hotcopy。它会备份您的整个存储库。占用更多磁盘空间,但很容易运行,也很容易使用它来恢复存储库。
VisualSVN 是一个 Windows 产品,因此它将在 Windows 上运行。如果备份实用程序能够使用卷影复制进行备份,那么应该会生成内部一致的备份。内置的 NTBACKUP 或第三方软件(如 Symantec Backup Exec)或内置于 Windows Server 2008 中的基于磁盘的备份工具都能够使用卷影复制。
对于那些只想在 Windows 系统上默认安装的 Visual SVN 中备份所有存储库的用户
我使用以下 cmd 脚本 - 它将存储库根目录的所有子文件夹转储到备份路径并7 压缩它们。