`
bulargy
  • 浏览: 66858 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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工具即可办到。...

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

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

    SVN 备份脚本

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

    SVN备份还原清理BAT

    对网上的SVN备份、还原、清理几天之前的备份进行了测试与修改。 全量备份:fullbackup.bat(使用前先修改目录)、hotcopy.bat 增量备份:svndump.bat(使用前先修改目录)、dump.bat、projectlist.conf(使用前先修改svn...

    SVN备份方案

    ### SVN备份方案详解 #### 一、备份与恢复机制 在IT行业中,版本控制系统是确保项目稳定性和可追溯性的重要工具之一。对于Subversion (SVN) 这样的集中式版本控制系统来说,确保数据的安全性至关重要。本文将详细...

    svn 备份 bat

    通过以上步骤,你就创建了一个自定义的SVN备份bat脚本,实现了自动化SVN仓库的备份。这个脚本可以根据具体需求进行调整,例如增加加密备份、压缩备份等高级功能。记得定期检查并更新脚本,确保它与你的SVN服务器配置...

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

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

    svn备份还原方法

    ### SVN备份与还原详解 #### 一、SVN简介 Subversion(简称SVN)是一种分布式版本控制系统,广泛应用于软件开发和其他需要版本控制的场景。它允许团队成员在一个中心存储库中保存工作副本,并能够记录每次更改的...

    SVN_BackUp.rar_svn 自动备份_svn备份

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

    Windows下SVN备份脚本

    post-commit.bat和deltaBackup.bat用的svnadmin dump命令,可以增量备份。 请注意,back.bat 、simplebackup.bat、post-commit.bat这三个文件放在文件版本库父目录(一般是X:\Repositories下面),deltaBackup.bat...

    一段进行SVN备份的脚本

    这段描述提到的“一段进行SVN备份的脚本”就是为了解决这一需求,它允许用户通过Windows计划任务自动化执行备份过程,以防止意外数据丢失。 首先,我们需要理解SVN备份的基本原理。SVN仓库通常存储在服务器上,包含...

    windows下svn异地备份与还原

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

    svn备份方案补充

    本篇文章将详细探讨“svn备份方案补充”,主要聚焦于如何在Linux环境下实现svn版本库的自动全量备份。 首先,理解svn的核心概念至关重要。svn是一个分布式版本控制系统,它允许团队成员对同一份代码进行协作编辑,...

    SVNBackUp.rar_SVNBackup _svn_svn 自动备份_svn备份

    在压缩包中的“SVN备份程序”,可能包含以下文件和文件夹: - 安装程序或可执行文件:用于安装和运行`SVNBackup`。 - 配置文件:包含备份计划和参数设置。 - 备份脚本:可能使用bash、批处理或其他脚本语言编写,...

    linux下\svn备份与同步

    总的来说,Linux下的svn备份与同步涉及到仓库的创建、权限配置、同步管理以及数据备份与恢复。理解和掌握这些操作对于维护稳定的版本控制环境至关重要。通过定期备份和同步,可以确保在出现意外情况时能够迅速恢复...

    SVN备份脚本.rar

    本压缩包"SVN备份脚本.rar"包含了实现SVN仓库自动备份的脚本,下面将详细介绍SVN备份脚本的使用、重要性以及如何进行定制。 1. SVN备份脚本的作用: SVN备份脚本的主要目的是定期备份SVN仓库,防止数据丢失。这在...

    windows&linux svn自动化全备份&增量备份脚本

    - **linux下-SVN全量和增量备份脚本.docx**:这份文档可能包含了详细的Linux环境下编写SVN备份脚本的步骤和示例代码。 - **svnBackupBat.rar**:这是一个Windows批处理脚本的压缩包,可能包含全备份和增量备份的bat...

    svnsync.sh svnhotcopy_daily.sh svn 备份

    结合描述,我们可以看出这是一个完整的SVN备份策略:每当源仓库有新的提交或更新时,`svnsync.sh`会将这些变更同步到备份服务器;同时,`svnhotcopy_daily.sh`会在每天的某个固定时间点创建一个热备份,以防万一同步...

    svn备份、还原与迁移操作手册.docx

    SVN 备份、还原与迁移操作手册 SVN(Subversion)是一种版本控制系统,用于管理软件开发过程中的代码变更。备份、还原和迁移是 SVN 中三项非常重要的操作,以下是关于 SVN 备份、还原与迁移的知识点总结: 一、SVN...

    SVN 备份及还原包括逻辑和物理备份

    SVN备份及还原策略应包括逻辑和物理备份,以应对各种可能的风险。通过定期执行备份计划,并结合本地和远程备份,可以最大程度地减少数据丢失的可能性。提供的bat脚本和相关文档可能提供了实现这些策略的具体步骤和...

Global site tag (gtag.js) - Google Analytics