




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SVN版本庫無損遷移與自動備份引:最近正在做版本庫遷移和自動備份,在網上找過一些相關資料,但都比較凌亂,讓人很糾結,相信很多網友會遇到相同的問題,筆者根據自己的整理和實踐結果總結了一套可操作(經過實際驗證)的方案,打算用兩篇博客與大家分享一下,供大家參考。一、業務目標1、在不改變原來版本庫的內容和版本號的前提下,把原來分散在多個服務器上的各個版本庫統一遷移到一臺服務器上的新版本庫上。2、實現新版本庫的定時自動備份。二、相關指令1、svnadmin dump命令語法svnadmin dump Repository_Path -r LOWER:UPPER -incremental(1)svnadm
2、indump命令用于導出整個Repository或Repository下的某個范圍的修訂版本。(2)參數說明:Repository_Path是版本庫的路徑,-rLOWER:UPPER用于指定導出的修訂版本范圍,由參數-r和兩個用:號隔開阿拉伯數字組成。例如:-r 0:100表示導出才版本0到版本100之間的所有修訂版,-r是revision的縮寫。-incremental,它使用增量方式來導出版本,即每次都只導出自上一個版本以來的修改。這樣的好處是第一:可以把一個大的文件切分成若干個小的文件。第二:在版本庫已經存在的情況下,我們只需要每次導出修改的部分,不需要每次都導出整個版本庫的內容。甚至可
3、以通過hook腳本,每天晚上自動將當天的修改dump出來做備份用。2、svnadmin load命令語法svnadmin load Repository_Path(1)svnadminload命令用于從標準輸入流/其它流中導入版本庫,(2)參數說明:Repository_Path是要導入的目標版本庫。3、dump和load的輸出/入重定向svnadmin dump oldRepository dumpfile svnadminload newRepository 把屏幕的輸出定向當前目錄下的dumpfile,而第二個命令從當前目錄下的dumpfile文件導入。4、把導出和導入合并。svnadm
4、in dump oldRepository| svnadmin load newRepository5、過濾器svndumpfilter用于指定只包括那些項目,不會包括其它的項目三、遷移版本庫(解決方案示例)方案1、一次全部遷移。首先新建三個批處理文檔(新建記事本,后綴改為.bat)導出.batsvnadmin dump oldRepository dumpfile新建版本庫.bat svnadmin create newRepostitory導入.batsvnadmin load newRepository D:dumpfile說明:上述步驟即實現將oldRepository版本庫無損遷移到
5、newRepository。這里是采用批處理文件的形式,完全可以在命令提示符窗口下,以命令的形式完成上述操作,注意必須在相應的目錄下執行。方案2、分批增量遷移版本庫。查看當前舊版本庫最新的版本號是多少在命令提示符窗口,打開庫所在目錄,例如:cd D:Repositories。執行svnlook youngest oldRepositories例如返回版本為281分批增量導出版本庫內容D:Repositoriessvnadmin dump oldRepository -r 0:100 dumpfile1導出第一個文件,版本號從0到100的修訂版本D:Repositoriessvnadmin du
6、mp oldRepository -r 101:200 -incremental dumpfile2導出第二個文件,版本號從101到200的修訂版本D:Repositoriessvnadmin dump oldRepository -r 201:281 -incremental dumpfile3導出第三個文件,版本號從201到281的修訂版本注:三個命令中第2,3個命令多了一個-incremental的參數,使其采用了增量的方式導出,分批導入版本庫文件注:打開要導入的版本庫所在目錄,例如cd E:Repositories。首先導入dumpfile1,然后是dumpfile2,dumpfile
7、3依次執行E:Repositoriessvnadmin load newRepository dumpfile1E:Repositoriessvnadmin load newRepository dumpfile2E:Repositoriessvnadmin load newRepository dumpfile3可能會出現的問題,提示錯誤:版本庫文件已經存在。請確認前邊導出時,是否使用了-incremental參數。說明:這里我們是在命令提示符窗口下進行的。同樣的,我們也可以按照方案1,采用寫批處理文件的方式。注:要根據自己的svn安裝目錄,和庫目錄寫命令,例如:C:Program File
8、sVisualSVN Serverbinsvnadmin load D:RepositoriesnewRepository dumpfile將轉儲文件三次送入過濾器,每次僅保留一個頂級目錄,就可以得到三個轉儲文件:cat dumpfile | svndumpfilter include Project1 1-dumpfilecat dumpfile | svndumpfilter include Project2 2-dumpfilecat dumpfile | svndumpfilter include project3 3-dumpfile注:cat是subversion的文檔中,關于sv
9、ndumpfilter介紹給出的命令,在windows下并沒有,與cat類似的命令是type,可以采用typedumpfile | svndumpfilter include Project1 1-dumpfile這三個轉儲文件中,每個都可以用來創建一個可用的版本庫,不過它們保留了原版本庫的精確路徑結構。也就是說,雖然項目Project1現在獨占了一個版本庫,但版本庫中還保留著名為Project1的頂級目錄。如果希望trunk、tags和branches這三個目錄直接位于版本庫的根路徑下,你可能需要編輯轉儲文件,調整Node-path和Copyfrom-path頭參數,將路徑Project1/
10、刪除。同時刪除轉儲數據中創建Project1目錄的部分。一般為如下的一些內容:Node-path: Project1 Node-action: add Node-kind: dir Content-length: 0注:手工編輯轉儲文件來移除一個頂級目錄時,不要讓編輯器將換行符轉換為本地格式(比如將rn轉換為n),很容易造成轉儲文件失效。最后,我們可以采用方案1提供的方法,將三個轉儲文件分別導入:svnadmin create Project1svnadmin load Project1 1-dumpfilesvnadmin create Project2svnadmin load Proje
11、ct2 2-dumpfilesvnadmin create Project3svnadmin load Project3 3-dumpfile遷移版本庫的解決方案就先寫到這,下篇博客中,我們將介紹定時自動備份版本庫的解決方案。四、定時自動備份版本庫解決方案1、業務目標版本庫的遠程自動備份,將版本庫備份到另一臺機器上。假設我們要同步的源版本庫為位于機器A,具體路徑我們不必理會,因為我們使用http協議目標庫在機器B, file:/F:/Repositories/svnproject,這個為了簡單和安全,我們使用file:/協議實現版本庫的本地備份,只需要將上述目標庫的位置,改成本地位置即可。2、
12、相關指令達到備份版本庫的目的要用到兩個命令:svnsync init初始化,建立目標庫和源庫之間的同步關系命令格式: svnsync init 目標庫URL 源庫URL(兩個URL之間有空格) svnsync sync真正的同步命令格式: svnsync sync 目標庫URL3、過程示例(1)備份在要備份的機器上建立版本庫(如果是本地備份,則在本地建立版本庫):svnadmin create test1BackUp進入源版本庫的hooks目錄,例如cdD:RepositoriesTestRepostitoryhooks創建pre-revprop-change.bat文件:復制pre-revp
13、rop-change.tmpl,將擴展名改為pre-revprop-change.bat,并且清空原有的所有內容,保存。修改文件:修改pre-revprop-change.tmpl文件,用記事本打開該文件,把文件最后的exit 1改為exit 0(原腳本的意思是如果修改的是svn:log屬性,將允許修改,返回0;否則,不允許,返回1,我們要將它改為允許修改所有的屬性,在腳本中直接返回0)同步初步: 在目標機器上,打開命令提示符窗口,打開SVN服務器Bin目錄,運行(會提示輸入用戶名和密碼,這里提供的用戶名和密碼是可以完全讀取于的計算機密碼,用戶名和密碼)實現同步:在目標機器上,打開命令提示符窗
14、口,打開SVN服務器Bin目錄,運行svnsyncsync file:/D:/Repositories/test1BackUp(如果提示輸入用戶名和密碼,你可以在這個命令之后加上 username 、password參數即svnsync sync file:/D:/Repositories/test1BackUp -username username -password password)注:第兩步可以直接放在一起,寫入到一個批處理文件(新建記事本,將中的兩句話放入,改記事本后綴為.bat),將該批處理文件放入SVN服務器Bin目錄,雙擊運行即可。一會我們設定執行備份會用到這個批處理文件。如果
15、是本地備份,則只需將目標URL改為本地庫位置即可。(針對VisualSVN,因為一臺機器上只能有一個VisualSVN服務器,所以所有版本庫只能在一個目錄下,才能被服務器識別,這樣,備份只能備在相同目錄,似乎意義不大。)如果版本庫較大時,備份的時間會有點慢,花費幾個小時或者一天也是有可能的,備份完畢,你可以打開目標庫看看,和源庫是一樣的。(2)定時執行備份。這里我們用到了windows自帶的任務計劃程序在控制面板所有控制面板項管理工具下,打開任務計劃程序主界面:點擊右側操作的創建任務開始創建任務,常規選項卡下,主要設置任務的基本信息,這里我們一般給任務起一個名字就可以了,例如SVN同步操作選項卡下,點擊新建,這里可以設定我們要執行的操作。我們備份SVN版本庫,需要執行,剛才設定好的備份批處理文件。這個文件,我們實現應該放在SVN服務器安裝目錄
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工出具合同協議
- 毛巾面料采購合同協議
- 售房賠償協議書范本
- 戀愛投資合同協議書范本
- 2025家居設計與裝修合同示范文本
- 2025屆湖南省師范大學附中高三下學期4月模擬(一)數學試題及答案
- 2025年的財產信托合同示范文本
- 2025私人居間合同個人之間的協議
- 單位禮品福利采購協議書
- 羅湖區電梯安全管理人員錯題復盤練習卷及答案
- DB34∕T 1948-2013 建設工程造價咨詢檔案立卷標準
- 漫畫教你精益生產課件
- 國內外橋梁垮塌事故案例分析
- Continual Improvement持續改進程序(中英文)
- GB∕T 20721-2022 自動導引車 通用技術條件
- RCA應用于給藥錯誤事情的分析結果匯報
- 申論答題紙-方格紙模板A4-可打印
- DB34∕T 2233-2021 預制混凝土砌塊護坡工程技術規程
- 排比句的好句
- 電梯維保人員獎罰制度
- 圓管涵結構計算
評論
0/150
提交評論