标题: [文件操作] 求助:svn多个代码库自动增量备份批处理脚本 [打印本页]
作者: xiaolang0302 时间: 2015-11-20 13:10 标题: 求助:svn多个代码库自动增量备份批处理脚本
我要给svn代码库做自动增量备份,全备份已实现,到增量备份时出问题了,请大神帮忙看下:
目录结构:
源目录:D:\Repositories
备份文件目录:D:\svnbackup_day
增量备份脚本代码:
@Echo off
@title backup svn files
Rem 每日增量备份
set temp=%date:~0,4%%date:~5,2%%date:~8,2%
set temp=%temp: =0%
md D:\svnbackup_day\Repositories_backup_%temp%
Rem 获取最新版本信息
for /f "delims=" %%i in ('dir /ad/b "D:\Repositories"') do svnlook youngest D:\Repositories\%%i > D:\svnbackup\tem_version\%%i_tem.txt
Rem android
for /f "tokens=* delims= " %%a in (D:\svnbackup\tem_version\android_tem.txt) do (
set /a youngest=%%a
)
Rem 获取上次备份版本信息,并进行增量备份
for /f "tokens=* delims= " %%b in (D:\svnbackup\version\android_version.txt) do (
set /a old=%%b
)
Rem 进行增量备份
if %youngest% gtr %old% (
svnadmin dump D:\Repositories\android -r %old%:%youngest% --incremental > D:\svnbackup_day\Repositories_backup_%temp%\android.dump
)
Rem 记录最新版本信息
echo %youngest% > D:\svnbackup\version\android_version.txt
。。。。。。。。粗体部分,每个代码库都要这样来一遍
D:\Repositories下有多个代码库,我现在只能一个个备份,有没有办法简化一下这个脚本,我也在网上查了很久,还是一头雾水,越来越混乱,原来想用for循环嵌套,但实际上又解决不了问题,我想是不是思路错了,应该不是用for来处理的,只能求助大神们,帮忙给看下!
作者: flyinnet9 时间: 2015-11-20 14:14
网上大把免费同步软件
作者: 依山居 时间: 2015-11-20 14:31
同上。重用性和可靠性都很差。老爱自己写呢。
作者: 依山居 时间: 2015-11-20 18:24
Cobian Backup 免费开源,相当专业的文件备份软件。用过有好感。
SVN有相应的备份工具,我没用过SVN你自己搜索。
作者: xiaolang0302 时间: 2015-11-24 11:44
回复 2# flyinnet9
问题是我不能只拷贝文件夹啊,要用svn的dump备份工具的,网上有哪款工具可以实现?
作者: xiaolang0302 时间: 2015-11-24 11:45
回复 4# 依山居
我下了你推荐的那个软件了,貌似拷贝形式的备份可以,但我要用svn自带的dump,然后再拷贝
作者: DAIC 时间: 2015-11-24 15:06
- @echo off
- setlocal enabledelayedexpansion
- title backup svn files
-
- REM 每日增量备份
- set "temp=%date:~0,4%%date:~5,2%%date:~8,2%"
- set "temp=%temp: =0%"
-
- md "D:\svnbackup_day\Repositories_backup_%temp%"
-
- for /f "delims=" %%i in ('dir /ad /b "D:\Repositories"') do (
- echo 正在处理 %%i
-
- REM 获取最新版本信息
- svnlook youngest "D:\Repositories\%%i" > "D:\svnbackup\tem_version\%%i_tem.txt"
-
- for /f "tokens=* delims= " %%a in ('type "D:\svnbackup\tem_version\%%i_tem.txt"') do (
- set "youngest=%%a"
- )
-
- REM 获取上次备份版本信息,并进行增量备份
- for /f "tokens=* delims= " %%a in ('type "D:\svnbackup\version\%%i_version.txt"') do (
- set "old=%%a"
- )
-
- REM 进行增量备份
- if !youngest! gtr !old! (
- svnadmin dump "D:\Repositories\%%i" -r !old!:!youngest! --incremental > "D:\svnbackup_day\Repositories_backup_%temp%\%%i.dump"
- )
-
- REM 记录最新版本信息
- echo !youngest! > "D:\svnbackup\version\%%i_version.txt"
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |