创建下面两个bat文件,修改backup.bat文件中的前三个路径,运行backup.bat即可备份。
backup.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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
1 2 3 |
@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