下面的脚本是在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就可以达到定期删除的目的。
时间: 2024-10-06 21:51:09