使用者工具

網站工具


service:subversion:subversion_如何備份_同步_svnsync

Subversion 如何備份(同步:svnsync)

來源:

http://blog.xuite.net/chijunglin/chijung/25368368

http://blog.jostudio.net/2007/06/svn.html

http://www.jaceju.net/blog/archives/275

副本:

經常使用Subversion的林桑,去年好不容易搞上了一台符合我身份地位的窮人版NAS,在一陣改機之後,現在NAS上最重要的三個service 1. Subversion 2.rTorrent 3.FTP/SAMBA

使用Subversion最麻煩的就是備份,經常使用Subversion的人應該會同意我的看法,Subversion上的Log message是記錄著你的成長足跡...甚至比svn上的source code還重要,偏偏林桑的工程師個性,常常搞的svn server運作的NAS常常需要重灌...幾次下來,也研究出一套完整備份SVN Repository的方法..

方法一、直接用copy/paste備份整個repository資料夾
    優點: 簡單(大概只要會用mouse上網的人都會用)
    缺點: 以NAS這種embedded system近似殘障的CPU來說,每次備份或壓縮repository要花上半天或一天是很正常的,而且隨著你使用svn的時間愈長,每次備份的時間會愈來愈長...

方法二、在XP上,再裝一個svn server,然後不定期(或定期)同步二個svn repository(使用svnsync)
    優點: 可以把xp這個做為redundant svn server 使用,如此一來SVN service就不會因為NAS被我搞掛而中斷囉;而且每次只做差異部份的同步,速度很快;同步到xp後,就可以使用xp上強力的cpu來壓縮備份,方便省事
    缺點: xp上的svn版本要跟nas上的一致,這樣還原時只要把xp上的整個repository的folder完整的copy到nas上,再改一下hooks 裡面的一些script檔(linux用shell-script  xp用batch-command)就可以還原囉;(ps 如果不一致的話,很有可能就無法直接還原,必須要再用svnsync的方式,再從xp sync回nas上)

 

言歸正傳,還是要講一下svnsync的方法 (為配合nas上無法昇級的subversion, 要先確定nas和xp都使用subversion 1.4.6)

[設定從xp將nas上的svn repository同步至xp上]
1.[NAS]先記下repository下db/uuid的內容(這個很重要,否則還原後你的client會無法認出原還後的是同一個repository)
2.[XP]先svnadmin create dest-trunk (建一個空的trunk用來存放備份的資料)
3.[XP]到dest-trunk裡的hooks目錄,執行cp pre-revprop-change.tmpl pre-revprop-change 並修改pre-revprop-change內容 將最後一行的exit 1 改成exit 0
4.[XP]執行svnsync init svn://XP_IP/dest-trunk svn://NAS_IP/src-trunk
5. [XP]執行svnsync sync svn://XP_IP/dest-trunk

[從xp的repository 還原NAS上的repository]
1.[XP]將dest-trunk透過SAMBA或ftp直接copy到NAS的repository folder
2.[NAS]修改對應的conf & hooks 指令
3.[NAS] vi repository/db/uuid 將uuid的內容修改成原先記下的uuid
4. enjoy
service/subversion/subversion_如何備份_同步_svnsync.txt · 上一次變更: 2011/01/03 05:23 (外部編輯)