svn备份与还原_脚本_(dump命令)

Posted yadongliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn备份与还原_脚本_(dump命令)相关的知识,希望对你有一定的参考价值。

今天备份svn, 能保证好用就行先, 回头再研究

buerguo.bat

@echo off
:: 关闭回显
:: 说明:如有命令不明白,请使用帮助命令:命令/? 。如:for/?
:: 设置标题
title SVN备份脚本
rem 设置变量
:: SVN_HOME svn程序的安装路径,指定到bin目录上一级。(如果路径有空格,请用""。)
set SVN_HOME=D:DevelopVisualSVNServer
:: SVN库的路径
set SVN_ROOT=D:Repositories
:: 备份SVN父目录的路径
set SVN_BACKUP_ROOT=D:svnrootbackup
:: 获取当前系统日期和时间用来创建目录,格式:年月日_时分秒毫秒。如: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%insvnadmin 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

修改三个路径即可

:: SVN_HOME svn程序的安装路径,指定到bin目录上一级。(如果路径有空格,请用""。)
set SVN_HOME=D:DevelopVisualSVNServer
:: SVN库的路径
set SVN_ROOT=D:Repositories
:: 备份SVN父目录的路径
set SVN_BACKUP_ROOT=D:svnrootbackup
=========================================================================
创建好该批处理文件放到了repository下(和路径没关系吧), 双击执行在指定目录下生成一个备份文件如下图:

技术分享图片


如何还原:
1.启动svnServer客户端, 新建一个repository(注意不要创建branches tags 和 trunk文件夹) , 就命名为demp吧

技术分享图片

在磁盘中可以找到该名为demp的repository

技术分享图片

 

2.打开命令行窗口, 输入以下命令:

svnadmin load D:Repositoriesdemp < D:svnrootbackup20180627_12565811uerguo.dmp

技术分享图片

 

这就完事儿了.

 

有问题在讨论吧. bat文件没仔细研究. 得空再说.

 

 

 

 

以上是关于svn备份与还原_脚本_(dump命令)的主要内容,如果未能解决你的问题,请参考以下文章

SVN服务器备份

[知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原

SVN服务器备份

SVN的备份与还原

SVN的备份与还原

PostgreSQL 备份与还原命令 pg_dump