`
zhaoshijie
  • 浏览: 2261716 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SVN 之 备份

阅读更多
关键字: svn 备份
版本控制最关键的一件事是保证数据的安全性,不能因为磁盘损坏,程序故障造成版本库无可挽回的错误,为此必须制定较完备的备份策略。
在Subversion中,我们有三种备份方式:完全备份,增量备份和同步版本库。

1. 完全备份:

最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此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:\svnrootbackup目录下,只需要运行:svnadmin hotcopy d:\svnroot\project1 d:\ svnrootbackup \project1

PS:如果我们目录下有很多版本库,需要为每个版本库写这样一条语句备份,必须想办法优化这个过程。为此,建立以下的2个bat文件,
simplebackup.bat:
@echo 正在备份版本库%1......
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!

backup.bat:
echo off
rem Subversion的安装目录
set SVN_HOME="D:\Subversion"
rem 所有版本库的父目录
set SVN_ROOT=D:\svnroot
rem 备份的目录
set BACKUP_SVN_ROOT=D:\svnrootbak
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
mkdir %BACKUP_DIRECTORY%
rem 验证目录是否为版本库,如果是则取出名称备份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simplebackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 备份目录%BACKUP_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 >> %DELTA_BACKUP_SVN_ROOT%\%1.dump
@echo 版本库%2成功备份到了%3!
2) 建立post-commit.bat文件,内容为:
echo off
set SVN_HOME="C:\Program Files\Subversion"
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 script)
在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="D:\Subversion"
%SVN_HOME%\bin\svnsync sync     --non-interactive svn://localhost/project2
2) 把post-commit.bat文件放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步




转自:http://hi.baidu.com/vb1980/blog/item/1306ee226ff370a74623e8a9.html
分享到:
评论

相关推荐

    SvnBackupApp,Visual SVN Server 备份,Visual SVN 备份,SVN 备份

    Visual SVN Server 备份工具,Visual SVN 备份工具,SVN 备份工具,按天,周,月定时备份,备份文件可加密存储,过期文件可以自动删除。Visual SVN Server 企业版才能用的定时备份任务,SvnBackupApp工具即可办到。...

    windows下svn异地备份与还原

    在Windows环境下,Subversion(简称svn)作为一款广泛使用的版本控制系统,对于团队协作和项目管理起着至关重要的作用。...文件"svn备份与还原.txt"很可能是详细的操作步骤和指南,建议仔细阅读并按照指导进行实践。

    linux svn自动备份

    通过以上步骤,我们已经创建了一个自动备份SVN仓库的完整流程,包括创建备份目录、筛选仓库列表、执行热备份、修改权限和清理旧备份。将其配置为计划任务后,可以确保SVN数据的安全性,即使发生意外也能快速恢复。

    SVN自动备份代码/文档功能

    本文将详细解释如何配置和使用SVN自动备份,以及如何利用Windows计划任务实现定期备份。 首先,我们需要理解SVN自动备份的基本原理。这通常涉及到创建一个脚本,该脚本调用SVN的命令行工具(如`svnadmin dump`)来...

    SVN增量备份-附带脚本

    增量备份是SVN备份的一种策略,它只备份自上次备份以来发生改变的数据,从而减少备份所需的时间和存储空间。 在"SVN增量备份-附带脚本"这个主题中,我们将探讨如何使用提供的脚本来实现这一功能。 1. **dump.bat**...

    svn增量备份脚本

    ### SVN增量备份脚本知识点详解 #### 一、SVN简介 Subversion(简称SVN)是一种开源的版本控制系统,用于管理源代码或文件目录树的变更。SVN通过记录每次提交的时间戳、作者和注释等元数据来追踪每个文件的历史变更...

    SVN 备份脚本

    通过创建SVN备份脚本,我们可以确保在开发过程中对代码库进行安全保护,避免数据丢失。以下将详细介绍如何实现SVN的增量备份和全量备份。 1. **全量备份** 全量备份是指获取SVN仓库中的所有文件和版本历史的完整...

    windows下svn的备份

    在Windows环境下,对Subversion(简称svn)进行备份是非常重要的,因为这有助于保护代码库免受数据丢失的风险。本文将详细介绍如何在Windows下利用svn的自带功能进行完全备份和增量备份。 **一、完全备份** 完全...

    SVN备份操作(包括完全备份,增量备份和同步版本库)

    ### SVN备份操作详解 #### 一、概述 版本控制系统的核心目标之一是确保数据的安全性和可靠性。对于企业级项目管理而言,任何因硬件故障或软件错误导致的数据丢失都是无法接受的。因此,制定全面且可靠的备份策略...

    Svn最强大的Windows下实现自动全量增量备份和异地备份,一切自动化完成

    1.SVN备份内容 SVN在Windows下的自动备份实现,包括: 1)SVN目录的全备份(1周或1个月备份1次,由windows计划来调度执行); 2)SVN增量备份(每日备份1次,由windows计划来调度执行)。 2. SVN备份流程 上述2类...

    SVN完全备份和增量备份

    SVN完全备份和增量备份 近存放项目的服务器要换,所以要对SVN项目进行备份,有几个项目的版本 ... SVN备份操作

    Windows下SVN的备份方案

    在Windows环境下,Subversion...总之,Windows下的SVN备份方案涉及多个层面,包括选择合适的备份方法、工具、策略以及定期测试。理解这些概念并根据你的具体需求定制方案,能有效保护你的源代码和项目数据免受损失。

    SVN(windows平台)自动备份脚本

    在Windows平台上,我们可以利用SVN的命令行工具以及系统自带的任务计划程序,实现SVN仓库的自动备份。下面将详细介绍如何配置和使用SVN自动备份脚本。 1. **SVN基础** SVN的核心功能是追踪文件和目录的更改,它...

    svn远程备份

    在进行svn远程备份前,首先需要建立版本库。这可以通过dos命令行方式完成。首先进入svn安装目录下的bin目录,然后输入命令svnadmin create 加上版本库路径和版本库名。比如,svnadmin create F:/svn。这会自动在指定...

    SVN增量备份脚本及MD5加密工具

    增量备份是SVN备份策略的一种,它只备份自上次备份以来发生改变的数据,从而节省存储空间和备份时间。在这个"SVN增量备份脚本及MD5加密工具"中,包含了两个批处理脚本和一个MD5加密工具,旨在简化和增强SVN仓库的...

    SVN_BackUp.rar_svn 自动备份_svn备份

    【SVN自动备份与双服务器备份策略】 ...总结,通过SVN的自动备份、双服务器备份和云存储服务的结合使用,我们可以构建一个高效且安全的SVN备份系统,确保在任何突发情况下都能迅速恢复数据,保证团队的正常开发工作。

    SVN 自动备份

    【标题】:“SVN 自动备份” 在软件开发过程中,版本控制是至关重要的,而Subversion(SVN)作为一款广泛应用的版本控制系统,为团队协作提供了便利。SVN自动备份是指通过设定一定的脚本或工具,定期对SVN仓库进行...

    svn自动备份脚本.zip

    svn自动增量备份 rem set logfile=svndump.log set SVN_HOME=C:\Progra~1\Subversion\bin set SVN_ADMIN="%SVN_HOME%\svnadmin.exe" set SVN_LOOK="%SVN_HOME%\svnlook.exe" set SVN_REPOROOT=e:\svn set RAR_CMD="C...

    SVN全局备份

    数据安全,SVN全局备份操作说明及解释,为SVN全局备份做示例

Global site tag (gtag.js) - Google Analytics