本节和大家学习一下SVN版本库自动备份问题,感兴趣的朋友们可以看一下,当让本节的内容仅供参考,如果你有什么好的方法大家可以相互讨论,欢迎大家一起来学习SVN版本库自动备份的知识,希望本文能教会你更多东西。
截止到目前为止,手上的项目都纳入SVN进行管理,随着而来的问题是:如何为SVN版本库实现自动备份。我手上用的是VisualSVN工具来代替SVN服务端,但VisualSVN没有提供备份工具,没办法只好自己写一个,再写这个脚本的时候,我参考了SCMLife论坛上某位朋友的脚本文件,并稍做修改,现在贡献出来!
前提条件:
你的机器上装有VisualSVN,如果没有,也没有关系,只要确保Subversion的安装目录下可以找到svnadmin这个命令即可。因为版本库的备份就是利用这个程序来实现;
你的机器上要有7zip的命令行程序7z.exe,如果没有,请去7zip官方网站下载,因为我们要用到这个程序来实现对备份后的版本库进行压缩保存;
知道你的版本库所在目录;
SVN版本库自动备份中备份脚本分为两个批处理文件,它们分别是:backup.bat与simpleBackup.bat。需要记住得是:simpleBackup.bat文件要放在版本库所在的目录下;而backup.bat可以任意放置。我们调用的是backup.bat;每次备份成功后,会在版本库所在目录下的backup.log文件中记录;
backup.bat源码
echooff
remSubversion的安装目录
setSVN_HOME="C:\ProgramFiles\VisualSVNServer"
rem所有版本库的父目录
setSVN_ROOT=E:\Repositories
rem备份的目录
setBACKUP_SVN_ROOT=E:\bak
rem创建存放版本库的临时目录
setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,4%%date:~5,2%%date:~8,2%
ifexist%BACKUP_DIRECTORY%gotocheckBack
echo%date:~0,4%%date:~5,2%%date:~8,2%:建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
SVN版本库自动备份时需要rem创建备份目录
md%BACKUP_DIRECTORY%
rem验证目录是否为版本库,如果是则取出名称备份
for/r%SVN_ROOT%%%Iin(.)do@ifexist"%%I\conf\svnserve.conf"call%SVN_ROOT%\simpleBackup.bat"%%~fI"%%~nI
echo开始压缩版本库,请不要中止....
%SVN_ROOT%\7z.exea-tzip%BACKUP_SVN_ROOT%\%date:~0,4%%date:~5,2%%date:~8,2%.zip%BACKUP_DIRECTORY%\*-r>nul
echo版本库压缩完成!
rem清除临时创建备份目录
rd/s/q%BACKUP_DIRECTORY%
gotoend
:checkBack
echo备份目录%BACKUP_DIRECTORY%已经存在,请清空。
gotoend
:end
SimpleBackup.bat源码@echo正在备份版本库%1......
@%SVN_HOME%\bin\svnadminhotcopy%1%BACKUP_DIRECTORY%\%2
@echo版本库%1成功备份到了%2!
PS:在编写批处理文件时,我试图创建一个变量,该变量用于保存当前日期,但是不知为何总是不能成功,相关代码如下:
echooff
setfilename=%date:~0,4%%date:~5,2%%date:~8,2%
echo文件名:%filename%。本节介绍SVN版本库自动备份完毕,请关注本节其他相关报道。
【编辑推荐】