转自:https://wuxiaobai.win/archives/111
。。。不用这么麻烦,svnadmin dump一句话搞定
用法
svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
svnadmin dump命令用于导出整个Repository或Repository下的某个范围的修订版本。REPOS_PATH是版本库的路径,[-r LOWER[:UPPER]]用于指定导出的修订版本范围,由参数-r和两个用:号隔开阿拉伯数字组成。例如:-r 0:50表示导出才版本0到版本50之间的所有修订版,-r是revision的缩写。
而另一个关键参数是--incremental。 它使用增量方式来导出版本,即每次都只导出自上一个版本以来的修改。这样的好处是第一:可以把一个大的文 件切分成若干个小的文件。第二:在版本库已经存在的情况下,我们只需要每次导出修改的部分,不需要每次都导出整个版本库的内容
超级懒人bat脚本
===================================================================================================
====================================================================================================
旧文档存根
一共四个文件,两个方法。一个用svnadmin dump命令,另一个用svnadmin hotcopy命令。文章里的目录请根据自己的实际情况修改
先介绍svnadmin hotcopy命令脚本,一共两个文件,两个文件请放到版本库父目录下(一般为X:\Repositories)
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=”C:\Program Files (x86)\VisualSVN Server”
rem 所有版本库的父目录
set SVN_ROOT=E:\Repositories
rem 备份的目录
set BACKUP_SVN_ROOT=D:\SVNbackup
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%已经存在,清空ing。
rd /s /q %BACKUP_DIRECTORY%
goto startBack
:end
因为上文中用了DATE:~0,10命令,所以请自行把电脑的时间格式调成yyyy-MM-dd,否则会造成无法创建文件夹导致备份失败(Windows只能创建2016-02-01这种格式的文件夹)
svnadmin dump方法,两个文件
post-commit.bat放到版本库父目录
deltaBackup.bat放到版本库的hooks文件夹下(每个版本库的hooks文 件夹下都需要放,支持增量备份,丢计划里面就行)
deltaBackup.bat
@echo 正在备份版本库%2……
@%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 –incremental>%DELTA_BACKUP_SVN_ROOT%\%1.dump
@echo 版本库%2成功备份到了%3!
post-commit.bat
@echo echo off
set SVN_HOME=”C:\Program Files (x86)\VisualSVN Server”
set SVN_ROOT=E:\Repositories
set UNIX_SVN_ROOT=E:\Repositories
set DELTA_BACKUP_SVN_ROOT=D:\SVNbackup\SVNIncrementalback
set LOG_FILE=%DELTA_BACKUP_SVN_ROOT%\Incrementalbackup.log
echo backup revision %2>>%LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do @if exist “%%I\conf\svnserve.conf” %SVN_ROOT%\%%~nI\hooks\deltaBackup.bat %%~nI %2
goto end
:end