Windows下SVN备份脚本
本站备份:svn备份与还原_脚本_(dump命令)
以下是转载记录, 转自:https://wuxiaobai.win/archives/111
用法
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_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=365rem 开始备份SVN:: 判断SVN程序是否存在 if not exist %SVN_HOME% goto errorgoto 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: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
===================================================================================================
====================================================================================================
旧文档存根
一共四个文件,两个方法。一个用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
Windows下SVN备份脚本相关推荐
- windows下svn备份
转载:https://www.cnblogs.com/HByang/articles/9088206.html svn备份的三种方法 1)svnadmin dump 2)svnadmin hotcop ...
- Windows下RMAN备份脚本
Windows 下RMAN备份脚本,比较简单. 我们看内容. 1. 修改RMAN相关参数 RMAN>show all; RMAN>CONFIGURE CONTROLFILE AU ...
- windows下mysql备份脚本
公司有个需求,要每天备份下一个即时通软件的Mysql数据库,下面是我写的运行在windows下的版本文件.设置个定时任务,没事让它自己背就可以了. D: cd D:\test rem 设置变量:备份 ...
- windows 下mysql备份脚本
首先设置自动登录账号 //mysql 设置自动登录账户 mysql_config_editor set --login-path=bak --user=root --host=127.0.0.1 -- ...
- 【RMAN】RMAN脚本中使用替换变量--windows 下rman全备脚本
[RMAN]RMAN脚本中使用替换变量--windows 下rman全备脚本 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...
- Windows的Subversion备份脚本
2015-12-08更新:备份时添加--revision head 只备份最新的版本,已从脚本中移除. 2013-12-09更新:forfiles命令添加错误输出日志. 2013-12-04更新:添加 ...
- Windows下自动备份Oracle数据库
Windows下自动备份Oracle数据库 先说说为啥要搞这么个玩意 那是上线前几天[这不是讲故事],测试环境用的数据库崩了[为啥崩了不知道].之前造的一堆测试数据全都没得了[].然后急急忙忙的恢复环 ...
- Linux下Shell 备份脚本集合
说到Shell大家都不陌生,Shell是Linux下批处理脚本文件,类似windows下的Vbs脚本等等,能协助我们完成一些自动化的任务,我们前面也介绍了一些Shell脚本协助我们完成了一些计划任务, ...
- windows下mysql备份
windows下mysql备份 关键字: windows mysql 备份 一.单机备份 1. ============================ 假想环境: MySQL 安 ...
- Windows下SVN权限配置过程详解
本节讲解一下Windows下SVN权限配置说明,针对的是一个目录下多库的情况,下面是具体的介绍,希望通过本文的学习,你能够对SVN权限配置问题有更加深刻的认识. 1.本文档适用于对Subvesion的 ...
最新文章
- POI解析Excel文件工具类
- Python-输入输出
- AcWing算法提高课 Level-3 第四章 高级数据结构
- O-R mapping工具
- flowable实战(十五)关于流程设计器 bpmn.js与vue的整合
- 无法检索文件服务器,无服务器快速无法检索pdf文件(base64编码)
- Android中FTP服务器、客户端搭建以及SwiFTP、ftp4j介绍
- (06)vtk修改默认鼠标操作,实现鼠标按键控制模型旋转
- Linux双网卡bonding举例
- Python出力scv文件,打开乱码问题
- 科来网络分析系统11.1(技术交流免费版)
- 阿里云 vs Azure-存储 CDN
- Android物联网(一)—— 蓝牙通讯
- 手把手教你---猿如意之八大高效利器使用
- 人的精力是什么?如何强化精力
- 第五届安洵杯网络挑战赛WP
- 网易云音乐小程序登录接口显示400,拥挤问题解决
- Object.values()
- .NET Core API网关Ocelot(十四)【转换Claims,日志,跟踪】
- 键盘输入一个整数1~7代表今天周几,再输入间隔天数n,判断n天后是周几