码迷,mamicode.com
首页 > Windows程序 > 详细

在windows上自动备份SVN版本库及定时删除

时间:2016-04-27 18:27:53      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

下面的脚本是在windows SVN的备份策略,采用的是hotcopy的方法

方案一:

1.先创建一个fullBackup的脚本;fullBackup.bat

echo off

rem Subversion的安装目录
set SVN_HOME="D:\Program Files\Subversion\bin"

rem 所有版本库的父目录
set SVN_ROOT=D:\svnserver

rem 备份的目录
set BACKUP_SVN_ROOT=D:\backupsvn\fullbackup
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,4%%date:~5,2%%date:~8,2%
set LOG_FILE=fullbackup-%date:~0,4%%date:~5,2%%date:~8,2%.log
if exist %BACKUP_DIRECTORY% rd /s/q %BACKUP_DIRECTORY%
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%\%LOG_FILE%
mkdir %BACKUP_DIRECTORY%

mkdir %BACKUP_DIRECTORY%\conf
xcopy %SVN_ROOT%\conf %BACKUP_DIRECTORY%\conf
echo %SVN_ROOT%\conf成功备份到了%BACKUP_DIRECTORY%\conf>>%SVN_ROOT%\%LOG_FILE%

rem 验证目录是否为版本库,如果是则取出名称备份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" hotcopy.bat "%%~fI" %%~nI

2.在创建一个热备脚本,hotcopy.bat

@echo 正在备份版本库%1……
@%SVN_HOME%\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!
echo 版本库%1成功备份到了%BACKUP_DIRECTORY%\%2>>%SVN_ROOT%\%LOG_FILE%

3.定期删除一个月之前的备份,delSVN.bat

echo on
rem 需要删除的SVN备份目录
set BACKUPSVN_ROOT="D:\backupsvn\fullbackup"
rem 正在删除30天前的备份版本库。。。
forfiles /p %BACKUPSVN_ROOT% /s /m * /d -30 /c "cmd /c del /s/q @path"
rem 删除空文件夹
dir /ad/b/s %BACKUPSVN_ROOT% |sort /r >f:\kill.txt 
For /f "tokens=*" %%i in (f:\kill.txt) DO rd "%%i" 
del f:\kill.txt

4.将这三个脚本放到一个目录下,点击fullBackup.bat就会在备份目录下生成YYmmdd/版本库。但是遗憾的是我将这个fullBackup放到任务计划程序中执行,下面的一个hotcopy.bat总是没执行成功,我已放弃。

方案二:

写一个备份脚本 hotcopy.bat

svnadmin hotcopy D:\Repositories\root F:\SVN\fullbackup\%date:~0,4%%date:~5,2%%date:~8,2%

放到任务计划执行就OK了,再结合delSVN.bat就可以达到定期删除的目的。

在windows上自动备份SVN版本库及定时删除

标签:

原文地址:http://www.cnblogs.com/zydev/p/5439812.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!