[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求助: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来处理的,只能求助大神们,帮忙给看下!

网上大把免费同步软件

TOP

同上。重用性和可靠性都很差。老爱自己写呢。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

Cobian Backup 免费开源,相当专业的文件备份软件。用过有好感。

SVN有相应的备份工具,我没用过SVN你自己搜索。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 2# flyinnet9

问题是我不能只拷贝文件夹啊,要用svn的dump备份工具的,网上有哪款工具可以实现?

TOP

回复 4# 依山居


    我下了你推荐的那个软件了,貌似拷贝形式的备份可以,但我要用svn自带的dump,然后再拷贝

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title backup svn files
  4. REM 每日增量备份
  5. set "temp=%date:~0,4%%date:~5,2%%date:~8,2%"
  6. set "temp=%temp: =0%"
  7. md "D:\svnbackup_day\Repositories_backup_%temp%"
  8. for /f "delims=" %%i in ('dir /ad /b "D:\Repositories"') do (
  9.     echo 正在处理 %%i
  10.    
  11.     REM 获取最新版本信息
  12.     svnlook youngest "D:\Repositories\%%i" > "D:\svnbackup\tem_version\%%i_tem.txt"
  13.    
  14.     for /f "tokens=* delims= " %%a in ('type "D:\svnbackup\tem_version\%%i_tem.txt"') do (
  15.         set "youngest=%%a"
  16.     )
  17.    
  18.     REM 获取上次备份版本信息,并进行增量备份
  19.     for /f "tokens=* delims= " %%a in ('type "D:\svnbackup\version\%%i_version.txt"') do (
  20.         set "old=%%a"
  21.     )
  22.    
  23.     REM 进行增量备份
  24.     if !youngest! gtr !old! (
  25.         svnadmin dump "D:\Repositories\%%i" -r !old!:!youngest! --incremental > "D:\svnbackup_day\Repositories_backup_%temp%\%%i.dump"
  26.     )
  27.    
  28.     REM 记录最新版本信息
  29.     echo !youngest! > "D:\svnbackup\version\%%i_version.txt"
  30. )
复制代码

TOP

返回列表