天天看點

SVN庫遷移及備份方法詳解

本節向大家簡單講解一下SVN庫遷移及備份方案,在學習SVN的過程中難免會遇到SVN庫的問題,在這裡和大家分享一下SVN庫遷移 及備份方面的知識,希望對你的學習有所幫助。

在做遷移操作前,請停止對svn進行送出操作。

1.SVN庫遷移方案(采用dump-load方案):

源SVN伺服器:192.168.1.200,Windows伺服器

目标SVN伺服器:192.168.1.201,Windows伺服器。采用CollabNetSubversionServer,假定 subversion安裝在D:/ProgramFiles/CollabNetSubversionServer上,SVN的Repository為 d:/Subversion/svnbackup

也即Windows服務中,可執行檔案的路徑為:“d:/ProgramFiles/CollabNetSubversionServer /svnserve.exe”–service-r“d:/Subversion/svnbackup”–listen-port“3690″

由于目前在subversion伺服器上實際上隻有svn://192.168.1.200/rd目錄下才有内容,是以隻需要遷移svn: //192.168.1.201/rd下的内容,步驟如下:

1、在源伺服器192.168.1.200上執行dump操作

注意此處實際上把repository中所有的目錄都備份了,需要在load時候采用svndumpfilter指令過濾需要的目錄。

svnadmindumpD:/Subversion/svnworkspace/bak>svn_all_20080520.dump

2、在192.168.1.201上建立svnbackupRepository

svnadmincreated:/Subversion/svnbackup

3、下載下傳一個windows版本gnu工具(例如http://sourceforge.net/projects/gnuwin32/),主要是使用 cat方法

4、将dump檔案拷貝到上并執行load操作

catsvn_all_20080520.dump|svndumpfilter-- include:rd>svn_rd_20080520.dump5、執行svnadminload

svnadminloadd:/Subversion/svnbackup<svn_rd_20080520.dump6、在 192.168.1.201上配置svnserve.conf、passwd、authz檔案

2.SVN庫遷移方案(采用svnsync方案)

從subversion1.4.4開始,提供了svnsync指令,可用于Subversion的庫遷移和備份,這裡我們用于備份操作的初始化同步。

假定從源伺服器192.168.1.201備份到192.168.1.88

SVN伺服器:192.168.1.201,Windows伺服器,采用CollabNetSubversionServer,假定subversion 安裝在D:/ProgramFiles/CollabNetSubversionServer上,SVN的Repository為d: /Subversion/svnbackup。

備份伺服器:192.168.1.88,RedhatAs4伺服器

采用svnsync進行資料遷移,方法如下:

1、在備份伺服器192.168.1.88上建立源伺服器192.168.1.201上對應的備份庫目錄

mkdir/opt/subversion

svnadmincreate/opt/subversion/svnbackup

2、在備份伺服器192.168.1.88上啟用鈎子檔案

cd/opt/subversion/svnbackup/hooks

echo“#!/bin/sh”>pre-revprop-change

chmod755pre-revprop-change

3、在備份伺服器192.168.1.88上運作svnsyncinit指令

svnsyncinitfile:opt/subversion/svnbackupsvn://192.168.1.201–usernameusername–passwordpassword

注意,svnsync的文法為:svnsyncinitDESTSOURCE

4、在備份伺服器192.168.1.88上執行同步操作

svnsyncsyncfile:opt/subversion/svnbackup

由于svnsyc隻能同步整個svn庫,并不能同步指定的項目,是以建議遷移時候使用dump-load方案,備份時候采用svnsync方案

3.SVN庫備份方案:

為保證svn伺服器的安全,由腳本每天定時對svn庫進行備份,以保證svn庫的安全性。備份仍然采用svnsync來完成。

1.在192.168.1.88上安裝subversion伺服器端

2.在192.168.1.88上建立備份使用者帳号svnsync,以供192.168.1.201能夠以此帳号實時把變更的同步到 192.168.1.88上

配置檔案svnserve.conf:

[general]

anon-access=none

auth-access=write

password-db=passwd

authz-db=authz

配置檔案passwd:

svnsync=svnsync

配置檔案authz

[groups]

developer=svnsync[/]

@developer=rw*=

3.在備份機上開啟iptables的3690端口

4.在備份機192.168.1.88上建立備份庫目錄

svnadmincreate/opt/subversion/svnbackup

chown–Rsvnsync:svnsync/opt/subversion/svnbackup

5.按照上述采用svnsync方案的步驟,将庫同步到192.168.1.88上,初始化svn庫

cd/opt/subversion/svnbackup/hooks

echo“#!/bin/sh”>pre-revprop-change

chmod755pre-revprop-change

svnsyncinitfile:opt/subversion/svnbackupsvn://192.168.1.201–usernameusername–passwordpassword

svnsyncsyncfile:opt/subversion/svnbackup

6.在源伺服器192.168.1.201上,建立鈎子檔案,保證192.168.1.201上的變動實時同步到192.168.1.88上:

post-commit

#PropagatethedatatotheremoterepositoryD:/ProgramFiles/CollabNetSubversionServer/svnsyncsynchronize--usernamesvnsync--passwordsvnsyncsvn://192.168.1.88post-rev-changes

#Propagatingchangestotheremoterepository.D:/ProgramFiles /CollabNetSubversionServer/bin/svnsynccopy-revprops--usernamesvnsync-- passwordsvnsyncsvn://192.168.1.88$REV4.參考文檔:http://blog.notreally.org /articles/2006/11/30/setting-up-a-subversion-mirror-repository-using-svnsync/

http://whynotwiki.com/How_I_moved_my_code_repository_to_Google_Code。本節關于 SVN庫遷移和備份内容講解完畢,請關注本節其他相關報道。