博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows下SVN备份脚本
阅读量:6955 次
发布时间:2019-06-27

本文共 4192 字,大约阅读时间需要 13 分钟。

 

本站备份:

 

以下是转载记录, 转自:

用法 

svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]

svnadmin dump命令用于导出整个Repository或Repository下的某个范围的修订版本。REPOS_PATH是版本库的路径,[-r LOWER[:UPPER]]用于指定导出的修订版本范围,由参数-r和两个用:号隔开阿拉伯数字组成。例如:-r 0:50表示导出才版本0到版本50之间的所有修订版,-r是revision的缩写。

而另一个关键参数是--incremental。 它使用增量方式来导出版本,即每次都只导出自上一个版本以来的修改。这样的好处是第一:可以把一个大的文 件切分成若干个小的文件。第二:在版本库已经存在的情况下,我们只需要每次导出修改的部分,不需要每次都导出整个版本库的内容

超级懒人bat脚本

@echo off:: 关闭回显 :: 说明:如有命令不明白,请使用帮助命令:命令/? 。如:for/? :: 设置标题title SVN备份脚本 rem 设置变量 :: SVN_HOME svn程序的安装路径,指定到bin目录上一级。(如果路径有空格,请用""。)set SVN_HOME="C:\Program Files\VisualSVN Server":: SVN库的路径set SVN_ROOT=E:\Repositories:: 备份SVN父目录的路径set SVN_BACKUP_ROOT=D:\SVNbackup:: 获取当前系统日期和时间用来创建目录,格式:年月日_时分秒毫秒。如:20131129_16275274set 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=365 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%:: 建立日志@echo [info]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%建立备份目录:%BACKUP_DIRECTORY% >>%LOG%:: 备份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.@echo [info]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%退出码为:%errorlevel%>>%LOG%:: 自动设置计划任务:每周六 晚上11点执行本脚本。at 23:00 /next:S %~f0>>%LOG%:: 删除过期备份goto delete :delete:: 输出要删除的目录到日志文件@echo [info]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%删除%NUM%天前的备份:>>%LOG%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 :errorecho [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

 ===================================================================================================

以下内容不需要查看

====================================================================================================

 旧文档存根

       一共四个文件,两个方法。一个用svnadmin dump命令,另一个用svnadmin hotcopy命令。文章里的目录请根据自己的实际情况修改

先介绍svnadmin hotcopy命令脚本,一共两个文件,两个文件请放到版本库父目录下(一般为X:\Repositories)

simplebackup.bat

@echo 正在备份版本库%1…… @%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2 @echo 版本库%1成功备份到了%2!

 

backup.bat

echo off rem Subversion 的安装目录 set SVN_HOME=”C:\Program Files (x86)\VisualSVN Server” rem 所有版本库的父目录 set SVN_ROOT=E:\Repositories rem 备份的目录 set BACKUP_SVN_ROOT=D:\SVNbackup set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%DATE:~0,10%\ if exist %BACKUP_DIRECTORY% goto checkBack echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%\backup.log mkdir %BACKUP_DIRECTORY% rem 验证目录是否为版本库,如果是则取出名称备份 for /r %SVN_ROOT% %%I in (.) do @if exist “%%I\conf\svnserve.conf” %SVN_ROOT%\simplebackup.bat “%%~fI” %%~nI goto end :checkBack echo 备份目录%BACKUP_DIRECTORY%已经存在,清空ing。 rd /s /q %BACKUP_DIRECTORY% goto startBack :end

 


因为上文中用了DATE:~0,10命令,所以请自行把电脑的时间格式调成yyyy-MM-dd,否则会造成无法创建文件夹导致备份失败(Windows只能创建2016-02-01这种格式的文件夹)


svnadmin dump方法,两个文件 

post-commit.bat放到版本库父目录 
deltaBackup.bat放到版本库的hooks文件夹下(每个版本库的hooks文 件夹下都需要放,支持增量备份,丢计划里面就行)

deltaBackup.bat

@echo 正在备份版本库%2…… @%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 –incremental>%DELTA_BACKUP_SVN_ROOT%\%1.dump @echo 版本库%2成功备份到了%3!

 

post-commit.bat

@echo echo off set SVN_HOME=”C:\Program Files (x86)\VisualSVN Server” set SVN_ROOT=E:\Repositories set UNIX_SVN_ROOT=E:\Repositories set DELTA_BACKUP_SVN_ROOT=D:\SVNbackup\SVNIncrementalback set LOG_FILE=%DELTA_BACKUP_SVN_ROOT%\Incrementalbackup.log echo backup revision %2>>%LOG_FILE% for /r %SVN_ROOT% %%I in (.) do @if exist “%%I\conf\svnserve.conf” %SVN_ROOT%\%%~nI\hooks\deltaBackup.bat %%~nI %2 goto end :end

 

转载于:https://www.cnblogs.com/yadongliang/p/9297058.html

你可能感兴趣的文章
EMC销售部全球CTO Patricia Florissi:大数据不是炒作
查看>>
判断字符串是否是合法的ipv4地址
查看>>
Linux系统手动安装rzsz 软件包
查看>>
Hyper-V安装笔记
查看>>
Golang面试题解析(二)
查看>>
Juniper SRX与思科跑IPSEC ×××+OSPF
查看>>
C语言学习之路(1)
查看>>
passwd修改用户密码
查看>>
Windows Phone(三)WP7版 " 记账本" 开发(使用SQLite数据库)
查看>>
CSS 几款比较常用的翻转特效(转载)
查看>>
html5 拖拽事件
查看>>
Spring创建对象的三种方式以及创建时间
查看>>
IO多路复用, 基于IO多路复用+socket实现并发请求(一个线程100个请求), 协程
查看>>
大白话Vue源码系列(03):生成AST
查看>>
vi / vim 删除以及其它命令
查看>>
Codeforces Round #564 (Div. 2) B. Nauuo and Chess
查看>>
Android 微信第三方登录
查看>>
Jsoup后台解析html、jsp网页
查看>>
JsonModel 的使用
查看>>
病毒分裂 NOIP模拟 矩阵快速幂 分治数列求和
查看>>