Svn在Windows下实现自动全量增量备份和异地备份汇总.docx

上传人:b****8 文档编号:29903582 上传时间:2023-08-03 格式:DOCX 页数:18 大小:134.95KB
下载 相关 举报
Svn在Windows下实现自动全量增量备份和异地备份汇总.docx_第1页
第1页 / 共18页
Svn在Windows下实现自动全量增量备份和异地备份汇总.docx_第2页
第2页 / 共18页
Svn在Windows下实现自动全量增量备份和异地备份汇总.docx_第3页
第3页 / 共18页
Svn在Windows下实现自动全量增量备份和异地备份汇总.docx_第4页
第4页 / 共18页
Svn在Windows下实现自动全量增量备份和异地备份汇总.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Svn在Windows下实现自动全量增量备份和异地备份汇总.docx

《Svn在Windows下实现自动全量增量备份和异地备份汇总.docx》由会员分享,可在线阅读,更多相关《Svn在Windows下实现自动全量增量备份和异地备份汇总.docx(18页珍藏版)》请在冰豆网上搜索。

Svn在Windows下实现自动全量增量备份和异地备份汇总.docx

Svn在Windows下实现自动全量增量备份和异地备份汇总

SVN在Windows下实现自动全量增量备份和异地备份

1SVN备份介绍

1.1SVN备份内容

SVN在Windows下的自动备份实现,包括:

1)SVN目录的全备份(1周或1个月备份1次,由windows计划来调度执行);

2)SVN增量备份(每日备份1次,由windows计划来调度执行);

1.2SVN备份流程

上述2类备份分别进行的流程如下:

1)通过windows定时任务功能,调度进行备份、压缩、FTP上传功能的bat文件;

2)将自动备份成按每日日期.dmp备份到SVN本机的其他磁盘空间中,分全备份和增量备份;

3)启动ftp上传命令,将备份的rar包立即上传在异地服务器上。

异地服务器需提前架好ftp服务器并建立好相关上传目录,建议使用用FileZilla_Server、serverU或者简单ftp软件进行搭建。

4)整个上传过程,详细记录备份、压缩、FTP上传各步骤详细日志,随时可以查阅每次备份记录的详细情况。

1.3SVN还原功能

可以进行还原所有版本库

2SVN备份BAT设计

1.4全备份BAT

1)SVN的全备份,AllBackUp.bat

:

Begin

@echooff

setlocalenabledelayedexpansion

echo正在准备备份所有版本库……

echo.

:

:

设置SVN命令目录

setSVN_CMD="E:

\VisualSVNServer\bin"

:

:

设置所有版本库根目录

setREPOS_ROOT=D:

\Repositories

:

:

设置所有版本库备份根目录

setREPOS_BACKUP_ROOT=F:

\[SvnBackup]\全备份

ifnotexist%REPOS_BACKUP_ROOT%mkdir%REPOS_BACKUP_ROOT%

:

:

设置所有版本库备份目录

setBACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date:

~0,10%.dmp

setBACKUP_DIRECTORY=%BACKUP_DIRECTORY:

/=-%

remifexist%BACKUP_DIRECTORY%gotoError2

remmkdir%BACKUP_DIRECTORY%

ifnotexist%BACKUP_DIRECTORY%mkdir%BACKUP_DIRECTORY%

 

:

:

设置用户权限信息备份目录

setREPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfo

ifnotexist%REPOS_USER_INFO_DIRECTORY%mkdir%REPOS_USER_INFO_DIRECTORY%

:

:

备份所有版本库

:

:

i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号

echo===================%date%%time:

~0,8%:

执行全部全量备份版本库.===================>>%REPOS_BACKUP_ROOT%\BackUp.log

echo备份的版本库版本信息如下:

>>%REPOS_BACKUP_ROOT%\BackUp.log

:

:

读取版本库根目录下每个文件夹,并判断其是否是一个版本库

for/r%REPOS_ROOT%%%iin(.)doifexist%%i\conf\svnserve.conf(

:

:

将当前版本库的最新版本信息写入tmp文件

%SVN_CMD%\svnlookyoungest%%~fi>%%~ni_last_revision.tmp

:

:

取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理

for/f%%jin(%%~ni_last_revision.tmp)doif%%jgtr0(

echo.

echo开始备份版本库%%~ni……

:

:

全量备份版本库

%SVN_CMD%\svnadmindump--deltas%%~fi>%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp

echo%time:

~0,8%%%~ni:

0-%%j>>%REPOS_BACKUP_ROOT%\BackUp.log

echo版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp!

:

:

删除临时文件

del%%~ni_last_revision.tmp

echo.

echo开始备份用户权限信息……

xcopy/y%REPOS_ROOT%\authz%REPOS_USER_INFO_DIRECTORY%

xcopy/y%REPOS_ROOT%\authz-windows%REPOS_USER_INFO_DIRECTORY%

xcopy/y%REPOS_ROOT%\htpasswd%REPOS_USER_INFO_DIRECTORY%

echo---------------------------------->>%REPOS_BACKUP_ROOT%\BackUp.log

echo.

echo用户权限信息备份成功!

echo%time:

~0,8%用户权限信息备份成功!

>>%REPOS_BACKUP_ROOT%\BackUp.log

echo.

echo全部版本库备份成功!

echo%time:

~0,8%全部版本库备份成功!

>>%REPOS_BACKUP_ROOT%\BackUp.log

AllBackupByFtp

gotoend

:

Error2

echo.

echo备份目录已经存在,请确认后删除该目录,重新运行程序!

gotoEnd

:

End

echo.

echo程序执行结束!

2)SVN的全备份进行FTP上传,AllBackupByFtp.bat

@echooff

REM======设置区Start================================

setftpUser=svn

setftpPass=svnbackup

setftpIP=192.168.1.22

setftpPort=2016

REM指定从FTP下载下来的文件存放到本机哪个目录

setftpFolder=/全备份

REM本地需要备份的根目录

setSvnBackupRoot=F:

\[SvnBackup]\全备份

REM本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)

setSvnBackupFolder=%SvnBackupRoot%\%date:

~0,10%.dmp

REM需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)

setrarToFilePath=%SvnBackupFolder%.rar

REMRAR执行文件的路径

setrarExePath="C:

\ProgramFiles\WinRAR\"

REMRAR执行文件的路径

setbakupLogFilePath=%SvnBackupRoot%\BackUp.log

REMFTP命令执行文件缓存

setftpFile=%cd%\TempFTP.txt

>"%ftpFile%"(

echo,open%ftpIP%%ftpPort%

echo,%ftpUser%

echo,%ftpPass%

echocd"%ftpFolder%"

echopromptoff

echobin

echoput%rarToFilePath%

echoput%bakupLogFilePath%

echobye

setPath=%Path%;%rarExePath%

setlogFilePath=%SvnBackupRoot%\ftpUp.log

REM======设置区End================================

 

echo===================%date%执行异地版本库全量备份开始=================>>%logFilePath%

ifnotexist%SvnBackupFolder%gotoError1

echo%time:

~0,8%备份压缩开始...>>%logFilePath%

WinRAR.exea-ep1-k-r-s-ibck%rarToFilePath%%SvnBackupFolder%

echo%time:

~0,8%备份压缩成功,压缩的文件路径为:

%rarToFilePath%>>%logFilePath%

echo%time:

~0,8%备份压缩继续上传FTP开始...>>%logFilePath%

ftp-v-i-s:

"%ftpFile%"

echo%time:

~0,8%上传FTP成功,上传FTP目录为:

%ftpFolder%>>%logFilePath%

del/q/s/f%rarToFilePath%

echo.>>%logFilePath%

gotoend

:

Error1

echo.

echo%time:

~0,8%提示:

需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!

>>%logFilePath%

echo%time:

~0,8%备份失败!

>>%logFilePath%

echo.>>%logFilePath%

echo提示:

echo需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!

:

End

echo.

echo程序执行结束!

1.5增量备份BAT

1)SVN数据库的增量备份,IncreBackUp.bat

:

Begin

@echooff

setlocalenabledelayedexpansion

echo正在准备备份所有版本库……

echo.

:

:

设置SVN命令目录

setSVN_CMD="E:

\VisualSVNServer\bin"

:

:

设置所有版本库根目录

setREPOS_ROOT=D:

\Repositories

:

:

设置所有版本库备份根目录

setREPOS_BACKUP_ROOT=F:

\[SvnBackup]\增量备份

ifnotexist%REPOS_BACKUP_ROOT%mkdir%REPOS_BACKUP_ROOT%

:

:

获取LastRevisions目录

setREPOS_LAST_REVERSION_DIRECTORY=%REPOS_BACKUP_ROOT%\LastRevisions

remifnotexist%REPOS_LAST_REVERSION_DIRECTORY%gotoError1

ifnotexist%REPOS_LAST_REVERSION_DIRECTORY%mkdir%REPOS_LAST_REVERSION_DIRECTORY%

:

:

设置所有版本库备份目录

setBACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date:

~0,10%.dmp

setBACKUP_DIRECTORY=%BACKUP_DIRECTORY:

/=-%

remifexist%BACKUP_DIRECTORY%gotoError2

remmkdir%BACKUP_DIRECTORY%

ifnotexist%BACKUP_DIRECTORY%mkdir%BACKUP_DIRECTORY%

 

:

:

设置用户权限信息备份目录

setREPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfo

ifnotexist%REPOS_USER_INFO_DIRECTORY%mkdir%REPOS_USER_INFO_DIRECTORY%

:

:

设置LastRevisions备份目录

setREPOS_LAST_REVERSION_BACKUP_DIRECTORY=%BACKUP_DIRECTORY%\LastRevisions

ifnotexist%REPOS_LAST_REVERSION_BACKUP_DIRECTORY%mkdir%REPOS_LAST_REVERSION_BACKUP_DIRECTORY%

:

:

备份所有版本库

:

:

i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号

echo===================%date%%time:

~0,8%:

执行全部版本库备份.===================>>%REPOS_BACKUP_ROOT%\BackUp.log

echo备份的版本库版本信息如下:

>>%REPOS_BACKUP_ROOT%\BackUp.log

:

:

读取版本库根目录下每个文件夹,并判断其是否是一个版本库

for/r%REPOS_ROOT%%%iin(.)doifexist%%i\conf\svnserve.conf(

:

:

将当前版本库的最新版本信息写入tmp文件

%SVN_CMD%\svnlookyoungest%%~fi>%%~ni_last_revision.tmp

:

:

取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理

for/f%%jin(%%~ni_last_revision.tmp)doif%%jgtr0(

:

:

判断以前是否存在该版本库的版本信息,存在说明以前备份过,需要基于其进行备份;否则对该版本库进行全新备份

ifexist%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt(

:

:

读取该版本库上次备份时保存的版本信息,如果小于当前版本信息则进行处理

for/f%%kin(%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt)doif%%klss%%j(

echo.

echo开始备份版本库%%~ni……

:

:

取得该版本库本次备份的起始版本号

setversion=%%k

set/aversion=!

version!

+1

:

:

增量备份版本库

%SVN_CMD%\svnadmindump--deltas%%~fi--revision!

version!

:

head--incremental>%BACKUP_DIRECTORY%\%%~ni-!

version!

-%%j.dmp

echo%%~ni:

!

version!

-%%j>>%REPOS_BACKUP_ROOT%\BackUp.log

echo版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-!

version!

-%%j.dmp!

)else(

echo.

echo开始备份版本库%%~ni……

:

:

全量备份版本库

%SVN_CMD%\svnadmindump--deltas%%~fi>%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp

echo%%~ni:

0-%%j>>%REPOS_BACKUP_ROOT%\BackUp.log

echo版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp!

:

:

将本次版本库备份时的最新版本信息写入文件保存

echo%%j>%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt

echo%%j>%REPOS_LAST_REVERSION_BACKUP_DIRECTORY%\%%~ni_last_revision.txt

:

:

删除临时文件

del%%~ni_last_revision.tmp

echo.

echo开始备份用户权限信息……

xcopy/y%REPOS_ROOT%\authz%REPOS_USER_INFO_DIRECTORY%

xcopy/y%REPOS_ROOT%\authz-windows%REPOS_USER_INFO_DIRECTORY%

xcopy/y%REPOS_ROOT%\htpasswd%REPOS_USER_INFO_DIRECTORY%

echo.

echo用户权限信息备份成功!

echo.

echo全部版本库备份成功!

IncreBackupByFtp

gotoend

:

Error1

echo.

echo提示:

echo上次备份保存的%REPOS_LAST_REVERSION_DIRECTORY%文件夹不存在,请确认后从上次备份中拷贝LastReversions到%REPOS_BACKUP_ROOT%目录,重新运行程序;

echo或者,不基于上次备份重新执行备份!

echo重新备份?

(Y/N)

set/pinput=

if%input%==Y(

mkdir%REPOS_LAST_REVERSION_DIRECTORY%

gotoBegin

)else(

gotoEnd

:

Error2

echo.

echo备份目录已经存在,请确认后删除该目录,重新运行程序!

gotoEnd

:

End

echo.

echo程序执行结束!

2)SVN数据的增量备份的FTP上传,IncreBackupByFtp.bat

@echooff

REM======设置区Start================================

setftpUser=svn

setftpPass=svnbackup

setftpIP=192.168.1.22

setftpPort=2016

REM指定从FTP下载下来的文件存放到本机哪个目录

setftpFolder=/增量备份

REM本地需要备份的根目录

setSvnBackupRoot=F:

\[SvnBackup]\增量备份

REM本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)

setSvnBackupFolder=%SvnBackupRoot%\%date:

~0,10%.dmp

REM需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)

setrarToFilePath=%SvnBackupFolder%.rar

REMRAR执行文件的路径

setrarExePath="C:

\ProgramFiles\WinRAR\"

REMRAR执行文件的路径

setbakupLogFilePath=%SvnBackupRoot%\BackUp.log

REMFTP命令执行文件缓存

setftpFile=%cd%\TempFTP.txt

>"%ftpFile%"(

echo,open%ftpIP%%ftpPort%

echo,%ftpUser%

echo,%ftpPass%

echocd"%ftpFolder%"

echopromptoff

echobin

echoput%rarToFilePath%

echoput%bakupLogFilePath%

echobye

setPath=%Path%;%rarExePath%

setlogFilePath=%SvnBackupRoot%\ftpUp.log

REM======设置区End================================

 

echo===================%date%执行异地版本库增量备份开始.===================>>%logFilePath%

ifnotexist%SvnBackupFolder%gotoError1

echo%time:

~0,8%备份压缩开始...>>%logFilePath%

WinRAR.exea-ep1-k-r-s-ibck%rarToFilePath%%SvnBackupFolder%

echo%time:

~0,8%备份压缩成功,压缩的文件路径为:

%rarToFilePath%>>%logFilePath%

echo%time:

~0,8%备份压缩继续上传FTP开始...>>%logFilePath%

ftp-v-i-s:

"%ftpFile%"

echo%time:

~0,8%上传FTP成功,上传FTP目录为:

%ftpFolder%>>%logFilePath%

del/q/s/f%rarToFilePath%

echo.>>%logFilePath%

gotoend

:

Error1

echo.

echo%time:

~0,8%提示:

需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!

>>%logFilePath%

echo%time:

~0,8%备份失败!

>>%logFilePath%

echo.>>%logFilePath%

echo提示:

echo需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!

:

End

echo.

echo程序执行结束!

3SVN还原BAT设计

SVN的还原LoadBackUp.bat

@echooff

echo正在准备还原所有版本库……

echo.

:

:

设置SVN命令目录

setSVN_CMD="E:

\VisualSVNServer\bin"

:

:

设置所有版本库根目录

setREPOS_ROOT=D:

\Repositories

:

:

设置所有版本库备份根目录

setREPOS_BACKUP_ROOT=F:

\[SvnBackup]\增量备份

ifnotexist%REPOS_BACKUP_ROOT%gotoError

 

:

:

还原所有版本库

echo===================%date%%time:

~0,8%:

执行版本库执行还原操作===================>>%REPOS_BACKUP_ROOT%\SvnLoad.log

echo还原的版本库版本信息如下:

>>%REPOS_BACKUP_ROOT%\SvnLoad.log

:

:

将所有保存版本库备份的文件夹名写入tmp

dir

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1