创建下面两个bat文件,修改backup.bat文件中的前三个路径,运行backup.bat即可备份。

backup.bat

rem SVN全备份脚本
echo off
rem Subversion的安装目录,也可通过Path中设置环境变量
set SVN_HOME="C:\Program Files\VisualSVN Server"
rem 所有版本库的父目录
set SVN_ROOT=D:\Repositories
rem 备份到位置目录
set BACKUP_SVN_ROOT=D:\RepositoriesBack
rem 备份子目录,Windows下日期格式如果用/会报错,这里将日期中的/替换成-,当然也可以将系统日期格式修改
set DATE=%date:~0,10%
set DATE=%DATE:/=-%
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%DATE%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%\backup.log
mkdir %BACKUP_DIRECTORY%
rem 验证目录是否为版本库,如果是则取出名称备份,,其中%%~nI是文件名,%%~xI是扩展名,防止仓库目录中有点造成最后一级丢失
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\backup-svnadmin.bat "%%~fI" %%~nI%%~xI
goto end
:checkBack
echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
pause
goto end
:end

backup-svnadmin.bat

@echo 正在备份版本库%1......
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!

走过的坑

1、windows下一定使用\否则会报出错误“svnadmin: E720003: Can’t createdirectory ‘G:\svnrootback\2014-08-13\project’:”系统找不到指定的路径。

2、系统日期格用/也会报svnadmin: E720003错,上面的代码已经将/替换成-了。

3、bat如何把%date:~0,10%的变量中的”/”变成”-”

4、调用 backup-svnadmin.bat 时传给的两个参数,后面一个为便利到的目录名+扩展名(%%~xI是扩展名),这样可以解决因仓库目录名中包含点而被脚本认为是扩展名。比如LTTC.APP和LTTC.IOS都会解析成LTTC,造成第二个仓库不能备份。

参考网站:

http://blog.csdn.net/u011391839/article/details/38754083
http://blog.csdn.net/windone0109/article/details/4040756

发表评论

/ 快捷键:Ctrl+Enter
加载中……