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

下面的脚本是在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就可以达到定期删除的目的。

 

方案三,用官方提供的备份脚本

可以定制备份几次,是否压缩

  

posted @   头痛不头痛  阅读(4630)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩