SVN增量備份實際方案和指令碼

2021-09-22 13:03:26 字數 4760 閱讀 8294

該程式為svn的增量備份指令碼,在實際中使用。

一、整體思路:

1、 設定系統需要處理的環境變數,如svn的安裝目錄、版本庫目錄、備份的目標目錄(backup_svn_root)等;

2、 將系統備份初始修訂號(每次提交時,系統自己儲存的乙個序號)儲存在資料夾svn_log_begin下(引數可配置)

3、 將本次備份結束修訂號儲存在資料夾svn_log_end(引數可配置)

4、 如果備份目標目錄不存在,則建立之;

5、 如果系統用專案列表備份目錄不存在(儲存所備份專案名稱),為初次執行任務,則建立之;

6、 如果系統用起始修訂號備份目錄(儲存所有專案各起始修訂號)不存在,為初次執行任務,則建立之;

7、 如果系統用結束修訂號備份目錄(儲存所有專案各結束修訂號)不存在,為初次執行任務,則建立之;

8、 刪除原來的專案列表;

9、 按備份時間的年月日生成備份目標目錄的名稱;如已經存在該名稱的目錄(已經備份),則跳轉到checkback,提示清空目錄再備份;

10、 在備份目標資料夾下建立本次備份的目標目錄、專案列表儲存目錄、修訂號起/始儲存目錄,用於將系統的對應目錄轉移到本此備份目錄下,記錄此次備份的情況;

11、 拷貝md5校驗程式到目標盤,以備還原時校驗用;

開始備份svn**庫__增量方式

12、 迴圈呼叫'dir /ad /b',判斷為資料夾(專案名稱),則呼叫子程式work_dump_incremental.bat 專案名稱,以對各個專案逐個增量備份;

13、 子程式呼叫結束---各專案備份完畢,則將源專案路徑根目錄下的所有檔案備份---包含認證檔案、日誌等;

14、 退出系統。

匯出指令碼主程式及說明:

echo 2011-01-31 copyright v2.0(v1.0為熱點拷貝和整專案dump方式)

rem 本指令碼工具為增量備份svn版本用總指令碼,與之配套的指令碼為svn_load_in.bat、work_load_in.bat

echo off

rem subversion的安裝目錄

set svn_home="c:\program files\visualsvn server"

rem 設定svn**庫所在的驅動器碟符需要修改

set svn_drv=d:

rem 所有版本庫的父目錄需要修改

set svn_root=d:\repositories

rem 設定svn**庫所在的目錄

set svn_dir=repositories

rem 設定當前已經備份專案列表儲存目錄

set svn_log=svn_log

rem 設定當前備份專案的起始修訂號儲存目錄,其下存以對應的專案名稱命名的檔案,檔案中儲存起始修訂號

set svn_log_begin=svn_log_begin

rem 設定當前備份專案的結束修訂號儲存目錄,其下存以對應的專案名稱命名的檔案,檔案中儲存結束修訂號

set svn_log_end=svn_log_end

rem 備份的碟符需要修改

set backup_svn_drv=f:

rem 備份的目錄需要修改

set backup_svn_root=f:\backupsvn

set backup_svn_folder=\backupsvn

rem 如果備份目錄不存在,則建立之-----資料來源部分

if not exist %backup_svn_root% md %backup_svn_root%

rem 如果專案列表備份目錄不存在,則建立之

if not exist %svn_drv%\%svn_log% md %svn_drv%\%svn_log%

rem 如果修起始訂號備份目錄不存在,則建立之

if not exist %svn_drv%\%svn_log_begin% md %svn_drv%\%svn_log_begin%

rem 如果結束修訂號備份目錄不存在,則建立之

if not exist %svn_drv%\%svn_log_end% md %svn_drv%\%svn_log_end%

rem 刪除原來的專案列表

del /q %svn_drv%\%svn_log%\*.*

set backup_date=%date:~0,10%

echo %backup_date%

set backup_path=%backup_svn_folder%\%backup_date%_dump

set backup_directory=%backup_svn_root%\%backup_date%_dump

if exist %backup_directory% goto checkback

rem 建立-----目標資料部分

echo建立備份目錄%backup_directory>>%svn_root%/backup.log

mkdir %backup_directory%

mkdir %backup_directory%\%svn_log%

mkdir %backup_directory%\%svn_log_begin%

mkdir %backup_directory%\%svn_log_end%

copy /y %svn_home%\bin\md5sum.exe %backup_directory%\md5sum.exe

%svn_drv%

cd \

cd %svn_dir%

echo開始備份svn**庫__增量方式》%svn_root%/backup.log

rem 驗證目錄是否為版本庫,如果是則取出名稱備份[不用校驗,對不設主幹、標籤、分支的資料性專案也做備份]

rem for /r %svn_root% %%i in (.) do @if exist "%%i\conf\" %svn_root%\******backup.bat "%%~fi" %%~ni

rem 列舉資料夾(專案名),進入備份具體專案子流程

for /f %%d in ('dir /ad /b') do call %svn_root%\work_dump_incremental.bat %%d

goto end

:checkback

echo 備份目錄%backup_directory%已經存在,請清空。

goto exit

:end

copy /y %svn_root%\*.* %backup_directory%\*.*

echo備份svn**庫完畢》%svn_root%/backup.log

set backup_date=

%svn_drv%

cd \

@echo on

:exit

附件1:匯出指令碼主程式:

二、匯出指令碼各專案具體執行程式

設計思路:

1、 如輸入引數為空,則退出本個專案備份(主要為除錯用)

2、 將本次備份的專案名稱追加到%svn_drv%\%svn_log%\proj_lst.txt列表中;

3、 設定bak_to為需要備份生成的檔名(含路徑);

設定本次備份的預設最小、最大修訂號均為零set lower=0,set upper=0

4、 如為初次備份(無%svn_drv%\%svn_log_end%\%svn_project%.txt),則到mk_end_log處新建

5、 否則,將上次備份的結束修訂號copy到本次準備備份的起始修訂號資料夾(使用時加1);

6、 :mk_end_lo g:呼叫svnlook.exe,將當前系統的修訂號取出;

7、 如果當前的修訂號為0,則不需備份

8、 如為初次備份,則用初始化的lower=0;否則,取出上次備份後的版本號,並做+1處理(注意此演算法未在98系統驗證);

9、 :bakup 備份專案的起始修訂號;

10、 呼叫svnadmin.exe進行增量備份;

11、 呼叫bzip2進行壓縮;

12、 儲存md5校驗,以備檢查備份檔案是否被非法修改;

13、 記錄備份日誌、時間戳;

14、 每次更新已經備份的專案列表;

15、 結束

echo 2010-05-27 copyright v2.0(v1.0為熱點拷貝和整專案dump方式)

rem 本指令碼工具為增量備份svn版本用子執行指令碼,與之配套的指令碼為svn_load_in.bat、work_load_incremental.bat

echo 進入單專案備份

set svn_project=%1

rem 引數不正確,結束

if "%1"=="" goto no_args

rem 將專案名稱新增到專案列表,以備還原時需要

echo %svn_project%>>%svn_drv%\%svn_log%\proj_lst.txt

for /f "tokens=1,2,3 delims=- " %%1 in ('date /t') do set date=%%1-%%2-%%3

for /f "tokens=1,2 delims=:" %%1 in ('time /t') do set time=%%1:%%2

rem bak_to為需要備份生成的檔名,包含專案名和日期、時間,如需要自動匯入時,則不能要日期時間等標識(@符號後面的去掉)【重要】

rem set bak_to=%backup_directory%\%svn_project%@%date%@%time%

set bak_to=%backup_directory%\%svn_project%

set lower=0

set upper=0rem

資料備份方案

客戶名稱 備份管理系統設計方案 科技 2016年9月 目錄一 專案概述 某某科技公司將會根據 客戶名稱 的網路實際需求制定一套完整的資料備份,災難恢復及伺服器整合和虛擬化方案。乙個完整的企業資料備份與恢復解決方案就意味著 保護 效能與完美的整合,一條龍式的服務,包括產品 服務與支援。我們在選擇備份系...

企業資料備份方案

各企業單位因其業務的特點,要求企業業務網路能夠長時間的安全可靠的執行,以提供其工作人員和企業客戶良好的經營環境。然而,隨著計算機網路技術的發展和業務拓展的需要,很多現代相繼開通了遠端聯網和遠端業務或inter 網上業務,其企業業務網路也從區域網發展成廣域網,因而很容易受到社會上黑客的攻擊和惡性病毒的...

企業資料備份方案

各企業單位因其業務的特點,要求企業業務網路能夠長時間的安全可靠的執行,以提供其工作人員和企業客戶良好的經營環境。然而,隨著計算機網路技術的發展和業務拓展的需要,很多現代相繼開通了遠端聯網和遠端業務或internet網上業務,其企業業務網路也從區域網發展成廣域網,因而很容易受到社會上黑客的攻擊和惡性病...