一直用这套脚本备份,脚本主体虽不是原创,但是从网上得到后因为不能运行也进行了些修改,前两天看到有人问关于SVN备份的问题,今天又把脚本整理了一下,解决了不能循环备份多个配置库的问题。希望对大家有所帮助。在此也谢谢提供脚本主体的高人。
我的备份策略是一个月一次全备份,一周一次增量备份,并且每天也进行增量备份,在Window任务里设置定时进行,设置好后就不用管了,再加一层保险就是定期把备份文件移到另外一台机器存储。
(一)全备份,包含两个文件hotcopy.bat和最终执行文件fullbackup.bat
1) hotcopy.bat
@echo 正在备份版本库%1……
rem @%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@%SVN_HOME%\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!

2)fullbackup.bat
echo off
rem Subversion的安装目录
rem set SVN_HOME="F:\Program Files\Subversion"
set SVN_HOME="F:\Program Files\CollabNet Subversion Server"
rem 所有版本库的父目录
set SVN_ROOT=G:\SVN
rem 备份的目录
set BACKUP_SVN_ROOT=h:\svnrootbak
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%

if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/fullbackup.log
mkdir %BACKUP_DIRECTORY%
rem 验证目录是否为版本库,如果是则取出名称备份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" hotcopy.bat "%%~fI" %%~nI
goto end
:checkBack
echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
goto end
:end

(二)增量备份,包含三个文件,dump.bat、最终执行文件svndump.bat和配置库名称配置projectlist.conf
1)dump.bat
@ECHO OFF
rem 调用格式:dump 项目库名
if "%1"=="" goto no_args
set PROJECT=%1
if not exist %RAR_STORE%\%PROJECT% mkdir %RAR_STORE%\%PROJECT%
cd %RAR_STORE%\%PROJECT%
SET LOWER=0
SET UPPER=0

@echo 项目库%PROJECT%2...>> %Log_PATH%\%PROJECT%_log.txt
%SVN_LOOK% youngest %SVN_REPOROOT%\%PROJECT%> %Log_PATH%\A.TMP
@echo 项目库%PROJECT%3...>> %Log_PATH%\%PROJECT%_log.txt
@FOR /f %%D IN (%Log_PATH%\A.TMP) DO set UPPER=%%D
if %UPPER%==0 GOTO :N_EXIT
if not exist %Log_PATH%\%PROJECT%_last_revision.txt GOTO :BAKUP
rem 取出上次备份后的版本号,并做+1处理(注意此算法未在98系统验证)
@FOR /f %%C IN (%Log_PATH%\%PROJECT%_last_revision.txt) DO @set LOWER=%%C
@set /A LOWER=%LOWER%+1
rem 不需要备份,则跳转结束
IF %LOWER% gtr %UPPER% GOTO :N_EXIT

:BAKUP
SET FILENAME=%PROJECT%_%LOWER%_%UPPER%
@ECHO 开始备份项目库:%PROJECT%,生成文件=%FILENAME%
%SVN_ADMIN% dump %SVN_REPOROOT%\%PROJECT% -r %LOWER%:head --incremental >%FILENAME%.dmp
rem %RAR_CMD% a -df %PROJECT%_%UPPER%.rar %
rem 准备写备份日志信息
IF %LOWER% gtr 0 GOTO :WRITENOTE
@ECHO ------2-----%date% >> %Log_PATH%\%PROJECT%_log.txt
@echo -- 3-------添加备份文件 %PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%] >> %Log_PATH%\%PROJECT%_log.txt
GOTO :COMPLETE

:WRITENOTE
@ECHO %date% >> %Log_PATH%\%PROJECT%_log.txt
@echo -- 4------添加增量备份文件 %PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%] >> %Log_PATH%\%PROJECT%_log.txt

:COMPLETE
rem 下面一行用于拷贝备份文件到映射的驱动器上
rem copy %PROJECT%.rar %RAR_STORE%\%PROJECT%\
move %FILENAME%.dmp %RAR_STORE%\%PROJECT%\
del %Log_PATH%\A.TMP
@echo %UPPER% > %Log_PATH%\%PROJECT%_last_revision.txt

:N_EXIT
@echo 项目库%PROJECT%处理结束...>> %Log_PATH%\%PROJECT%_log.txt
@CD..
@exit /B
:no_args
@ECHO ON
@echo "正确调用方法: dump 项目库名"

2)svndump.bat 
echo off
rem Subversion的安装目录及执行文件
set SVN_HOME="F:\Program Files\CollabNet Subversion Server"
set SVN_ADMIN=%SVN_HOME%\svnadmin.exe
set SVN_LOOK=%SVN_HOME%\svnlook.exe
rem 配置库仓库根目录
set SVN_REPOROOT=G:\SVN
rem 压缩命令
set RAR_CMD="E:\Progra~1\WinRAR\WinRAR"
rem 增量备份文件存放路径
set RAR_STORE="H:\svnincrementW"
rem 日志及最后一次备份修订号存放文件目录,以下是跟增量备份脚本目录同一目录
set Log_PATH=G:\backup\incrementW

@echo 项目库%PROJECT%处理1...>> %Log_PATH%\%PROJECT%_log.txt
rem 读取项目库列表文件,并忽略其中;开头的行
FOR /f "eol=;" %%C IN (projectlist.conf) DO call G:\backup\incrementW\dump.bat %%C

3)projectlist.conf
;**************************************************
;01. project1开发库
; 更新频率: 高
;**************************************************
PROJECT1
;**************************************************
;02. 此处可写注释信息
;**************************************************
PROJECT2
PROJECT3
PROJECT4
PROJECT5

svn备份脚 本的更多相关文章

  1. svn 备份后双机同步热备失效,提示 W200007 target server does not support atomic revision property edits svynsync:E170009

    svn 备份后双机同步热备失效,提示 W200007 target server does not support atomic revision property edits; consider u ...

  2. SVN备份批处理文件

    SVN备份批处理文件,亲测可用 另外,备份文件时获取文件名%%~ni 可改为%%~nxi,以避免文件名中有“.”号时,读取不完成,将.后面的当作后缀名 需要使用hotcopy 时,可以将关键代码进行相 ...

  3. SVN备份教程(三)

    上次的博文SVN备份教程(二)中,我们讲解了一下SVN定时备份的相关内容,同时我们又提出了一种新的SVN备份方案--自动备份. 1.简介 所谓自动备份,它实现的思路非常简单,就是利用SVN自带的hoo ...

  4. SVN备份教程(二)

    上次的博文中SVN备份教程(一)我们简单介绍了一下SVN备份是如何操作的,今天我们接着将上次的问题进行优化. 1.问题回顾 在讲之前,我们先来将上次的问题重申一下.之前的SVN备份存在的问题很简单,每 ...

  5. SVN备份教程(一)

    最近一段时间在项目中用到了SVN备份的相关内容,这里给大家做一个简单的教程,重点在于SVN备份环境的搭建过程中,大家学到的解决问题的思维方式. 1.分类 SVN备份主要分为两种:一种是远程备份,另一种 ...

  6. 研究windows下SVN备份及还原恢复方案

    windows下SVN备份方案 备份策略 svn备份一般采用三种方式: 1)svnadmin dump  2)svnadmin hotcopy  3)svnsync.  注意,svn备份不宜采用普通的 ...

  7. SVN备份还原

    本文是对SVN备份还原的一个简单记录 /*千万不能用VisualSVN Server PowerShell,否则在还原Load的时候会发生错误E140001,具体参考http://stackoverf ...

  8. Windows下SVN备份脚本

    本站备份:svn备份与还原_脚本_(dump命令) 以下是转载记录, 转自:https://wuxiaobai.win/archives/111 用法 svnadmin dump REPOS_PATH ...

  9. svn备份与还原_脚本_(dump命令)

    今天备份svn, 能保证好用就行先, 回头再研究 buerguo.bat @echo off :: 关闭回显 :: 说明:如有命令不明白,请使用帮助命令:命令/? .如:for/? :: 设置标题 t ...

随机推荐

  1. Unity3D 将 Unity 嵌入WPF中的一些研究笔记

     一. 在 WPF 中使用 WebBrowser,直接打开 WebPlayer.html 以这种方式有一个问题是. 无法在 WebBrowser 的上面 放置其它的控件, 在运行时,都不会显示 . 以 ...

  2. 理解 Memory barrier

    理解 Memory barrier(内存屏障) 发布于 2014 年 04 月 21 日2014 年 05 月 15 日 作者 name5566 参考文献列表:http://en.wikipedia. ...

  3. 游戏引擎网络开发者的64做与不做(二A):协议与API

    [编者按]在这个系列之前的文章"游戏引擎网络开发者的64做与不做(一):客户端方面"中,Sergey介绍了游戏引擎添加网络支持时在客户端方面的注意点.本文,Sergey则将结合实战 ...

  4. Codeforces 294B Shaass and Bookshelf(记忆化搜索)

    题目 记忆化搜索(深搜+记录状态) 感谢JLGG //记忆话搜索 //一本书2中状态,竖着放或者横着放 //初始先都竖着放,然后从左边往右边扫 #include<stdio.h> #inc ...

  5. 2014多校第十场1002 || HDU 4972 A simple dynamic programming problem

    题目链接 题意 : 每次无论哪个队投进一个篮球,就记下现在两队比分的差值,问你最后的结果有多少种情况. 思路 : 该题实在是不好理解,最后的结果有多少种情况就是说不管中间过程怎么来的,只要最后结果不一 ...

  6. POJ 1144 Network(Tarjan)

    题目链接 题意 : 找出割点个数. 思路 : Tarjan缩点,u是割点的充要条件是:u要么是具有两个以上子女的深度优先生成树的根,要么不是根,而有一个子女v满足low[v]>=dfn[u]. ...

  7. hdu 4759 Poker Shuffle 二进制

    思路:主要是二进制的运用. 为了方便从0开始,首先看下右移一下,高位异或1的规律:(可以从右往左一列一列看) 000(0) -> 100(4) -> 110(6) -> 111(7) ...

  8. (转)android屏幕适配

    声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息 原文作者: zhuangyujia 原文地址: http://my.eoe.cn/zhuangyujia/archiv ...

  9. TCP协议RST:RST介绍、什么时候发送RST包

    TCP协议RST:RST介绍.什么时候发送RST包 RST标示复位.用来异常的关闭连接. 1. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包,发送RST. 2. 而接收端收 ...

  10. mysql主从配置(转载)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://369369.blog.51cto.com/319630/790921 还可以参考 ...