visualSVN服务器备份脚本,修复bug亲测可用

这个脚本的原始版本在网上可以找到,
但是现在windows10 已经不支持AT这个命令,更新为schtasks,同时修复了时间包含空格时出错的bug,所以路径全部用 " "包含,亲测可用。
脚本如下:

 @echo off
:: 关闭回显
:: 说明:如有命令不明白,请使用帮助命令:命令/? 。如:for/?
:: 设置标题
title SVN备份脚本
rem 设置变量
:: SVN_HOME svn程序的安装路径,指定到bin目录上一级。(如果路径有空格,请用""。)
set SVN_HOME=C:\Program Files\VisualSVN Server
:: SVN库的路径
set SVN_ROOT=D:\SVN\Repositories
:: 备份SVN父目录的路径
set SVN_BACKUP_ROOT=D:\SVN\Backup
:: 获取当前系统日期和时间用来创建目录,格式:年月日_时分秒毫秒。如:20131129_16275274
set TIME_DIR=%date:~,4%%date:~5,2%%date:~8,2%_%time:~,2%%time:~3,2%%time:~6,2%%time:~9,2%
:: SVN备份子目录的路径
set BACKUP_DIRECTORY=%SVN_BACKUP_ROOT%\%TIME_DIR%
:: 日志文件路径(将日志和备份文件放在一个目录,删除时一起删除了)
set LOG=%BACKUP_DIRECTORY%\backup.log
:: 指定备份文件删除时间(单位:天)。0 - 32768 范围内的任何数字。
set NUM=30
rem 开始备份SVN
:: 判断SVN程序是否存在
if not exist "%SVN_HOME%" goto error
goto start
:start
:: 查询日志大小(单位:字节),超过1Mb就新建一个 (日志放入备份目录后,此语句无效。仅备份!)
:: for /r "%SVN_BACKUP_ROOT%" %%I in (backup.log) do if %%~zI GEQ 1048576 ren "%LOG%" "backup_%TIME%.log"
:: 新建目录
mkdir "%BACKUP_DIRECTORY%"
:: 建立日志
:: 备份SVN版本库并输出日志到文件
for /d %%i in ("%SVN_ROOT%\*") do (
@echo 备份 %%~ni 库,备份文件名:%%~ni.dmp >>"%LOG%"
:: 完整备份(增量备份在dump后面添加参数 --incremental)
"%SVN_HOME%\bin\svnadmin" dump "%SVN_ROOT%\%%~ni" >"%BACKUP_DIRECTORY%\%%~ni.dmp" 2>>"%LOG%"
)
:: 输出备份命令退出码,用来判断是否备份成功。成功的退出码为0.
:: 自动设置计划任务:每天凌晨3点备份服务器代码。
schtasks /create /tn "backupsvn"  /tr %~f0 /sc daily /st 03:00:00 /f >>"%LOG%"
schtasks /query /FO LIST /V /TN "backupsvn">>"%LOG%"
::at 23:00 /next:S %~f0>>"%LOG%"
:: 删除过期备份
goto delete
:delete
:: 输出要删除的目录到日志文件

forfiles /P "%SVN_BACKUP_ROOT%" /M *_* /D -%NUM% /C "cmd /c echo 删除文件夹:@file">>"%LOG%"
:: 使用rd命令删除超过%NUM%天的备份目录。如果不存在匹配条件的目录,将提示:错误: 用指定的搜索标准没有找到文件。如果存在匹配的文件,则提示:目录名无效
forfiles /P "%SVN_BACKUP_ROOT%" /M *_* /D -%NUM% /C "cmd /c rd /s/q @path" 2>>"%LOG%"
goto end
:error
echo [error]"%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%"程序目录不存在,请检查:"%SVN_HOME%">>"%LOG%"
goto end
:end
:: 输出一行空行分割日志
@echo. >>"%LOG%"
exit
:: 调试脚本用的命令
:: at 16:06 %~f0
:: PAUSE
:: exit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值