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=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 :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
Windows下SVN备份脚本的更多相关文章
- 研究windows下SVN备份及还原恢复方案
windows下SVN备份方案 备份策略 svn备份一般采用三种方式: 1)svnadmin dump 2)svnadmin hotcopy 3)svnsync. 注意,svn备份不宜采用普通的 ...
- Windows 下 MySQL 备份脚本
@title MySQL备份脚本 @echo off @echo root@127.0.0.1:3306 set host=127.0.0.1 set port=3306 set user=root ...
- Windows的Subversion备份脚本
2015-12-08更新:备份时添加--revision head 只备份最新的版本,已从脚本中移除. 2013-12-09更新:forfiles命令添加错误输出日志. 2013-12-04更新:添加 ...
- 在windows下编写shell脚本
注意两点: 1.第一行:#!/bin/bash 2.将文档格式转换为unix,因为在windows下编写shell脚本回车符是\n\r,而linux下的回车符是\n,所以在linux下运行脚本的时候, ...
- Windows下SVN服务器搭建方法整理(apache)
http://skydream.iteye.com/blog/437959 http://www.cnblogs.com/liuke209/archive/2009/09/23/1572858.htm ...
- Windows下SVN权限配置过程详解
本节讲解一下Windows下SVN权限配置说明,针对的是一个目录下多库的情况,下面是具体的介绍,希望通过本文的学习,你能够对SVN权限配置问题有更加深刻的认识. 1.本文档适用于对Subvesion的 ...
- 【Linux】windows下编写的脚本文件,放到Linux中无法识别格式
注意:我启动的时候遇到脚本错误 » sh startup.sh -m standalone tanghuang@bogon : command not found : command not foun ...
- Windows下SVN权限配置
Windows下SVN权限配置 按照前面的教程装完1.6.1版以后,当svnadmin create D;\svn创建仓库后,应该在仓库目录下的config目录有3个文件— auth ...
- 在linux和windows下自动备份数据库
摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...
随机推荐
- python3 map,filter和列表推导式
num_list = [11,2,-33,10,7,3,5,43] 1.filter 函数 获取num_list大于5的元素,并返回列表 用lambda表达式实现: # 在python2 中 fil ...
- 关于UITableView的黑线条
这里採用分组形式.底色可用图片覆盖,设置为cell(是一个view)的子视图,并把cell'的颜色设置为底色 当UITableView的cell没有满屏显示时,就会出现黑线条.我们仅仅需在初始化时,加 ...
- 转:使用RNN解决NLP中序列标注问题的通用优化思路
http://blog.csdn.net/malefactor/article/details/50725480 /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author ...
- C++ 容器元素的存储和获取
1.存储对象,存储的是对象的副本,并不是原对象.2.获取对象,获取的是对象的引用,为什么要这样设计?a.存储对象只发生一次,而获取对象往往会有多次,获取对象,如果每次都返回对象的副本,这个开销很大.b ...
- 自然语言处理哪家强?【36kr】
语音交互事关未来,国内外已经不少公司在抢蛋糕了,大公司收购.投资.合作不断,就可见一斑.目前,基本上所有的巨头都有涉足. 苹果收购 Siri.Novauris,组建基于神经网络算法的语音识别团队 20 ...
- iOS 中基础字符判断函数收集(如判断大小写、数字等)
函数:isdigit 用法:#include 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零. 函数:islower 用法:#include 功能:判断字符c是否为小写英 ...
- C/S通信模型与B/S通信模型介绍
1.客户端与服务器之间的通信模型 基于Socket连接的客户端与服务器之间的通信模型图如上图所示,整个通信过程如下所示: (1) 服务器端首先启动监听程序,对指定的端口进行监听,等待接收客户端的连接请 ...
- linux测试工程介绍(Linux Test Project)
http://ltp.sourceforge.net/ Linux Test Project, 后台很硬,由SGI™ 发起, IBM维护,所以质量有保障. 里面介绍了很多工具,对于一般的基准测试应该是 ...
- 微软BI 之SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表
基于父子关系的递归结构在公司组织结构里比较常见,基本上都是在一张表里实现的自引用关系.在报表中如果要实现这种效果,并且在这个基础上做一些数据的汇总,可以使用到下面提到的方法. 要实现的效果大致如下 - ...
- JetBrains中配置注释与代码对齐的方法
一.解决方案