術語匯編:Visual Subversion的備份和還原
在學習Subversion的過程中,你可能會遇到Visual Subversion備份和還原的問題,下面我們就來簡單的學習一下Visual Subversion備份和還原,希望對大家學習Subversion有所提升。
除去最常用的update,checkout,commit等操作,最常見的就是對svn版本庫的備份和還原。
備份策略
Visual Subversion備份一般采用三種方式:
1)svnadmindump
2)svnadminhotcopy
3)svnsync.
注意,svn備份不宜采用普通的文件拷貝方式(除非你備份的時候將庫暫停),如copy命令、rsync命令。
筆者曾經用rsync命令來做增量和全量備份,在季度備份檢查審計中,發現備份出來的庫大部分都不可用,因此最好是用svn本身提供的功能來進行備份。
優缺點分析:
==============
第一種svnadmindump是官方推薦的備份方式,優點是比較靈活,可以全量備份也可以增量備份,并提供了版本恢復機制。
缺點是:如果版本比較大,如版本數增長到數萬、數十萬,那么dump的過程將非常慢;備份耗時,恢復更耗時;不利于快速進行災難恢復。
個人建議在版本數比較小的情況下使用這種備份方式。
第二種svnadminhotcopy原設計目的估計不是用來備份的,只能進行全量拷貝,不能進行增量備份;
優點是:備份過程較快,災難恢復也很快;如果備份機上已經搭建了svn服務,甚至不需要恢復,只需要進行簡單配置即可切換到備份庫上工作。
缺點是:比較耗費硬盤,需要有較大的硬盤支持(俺的備份機有1TB空間,呵呵)。
第三種svnsync實際上是制作2個鏡像庫,當一個壞了的時候,可以迅速切換到另一個。不過,必須svn1.4版本以上才支持這個功能。
優點是:當制作成2個鏡像庫的時候起到雙機實時備份的作用;
缺點是:當作為2個鏡像庫使用時,沒辦法做到“想完全拋棄今天的修改恢復到昨晚的樣子”;而當作為普通備份機制每日備份時,操作又較前2種方法麻煩。
Visual Subversion備份的命令
全備份:使用svnadmindump或svnadminhotcopy或svnsync來做,hotcopy:svnadminhotcopypath/to/repositorypath/to/backup–clean-logs
dump:svnadmindump版本庫路徑及名稱–revision導出的版本號>導出的命名
增量備份:使用svnadmindump的–incremental選項來實現
svnadmindump版本庫路徑及名稱–revision上次導出的版本號:到本次要導出到的版本號–incremental>導出的命名
一個技巧:如果你有一個較大的Subsersion版本庫而你又想用最少的空間來將它備份下來,用這個命令(請將/repo替換成你的版本庫路徑)吧:
svnadmindump–deltas/repo|bzip2|teedump.bz2|md5sum>dump.md5
分步解釋:最重要的一步是-deltas,將消耗更多的CPU資源,但擁有更有效的差異存儲辦法。
bzip2壓縮方案比gzip慢,但換來的更好的壓縮率。
更有趣的是,tee方法將壓縮的數據流轉向到文件dump.bz2,同時將其輸出到標準輸出,后者有轉向給了MD5摘要計算工具。
Visual Subversion還原命令
還原版本:svnadminload要恢復的版本庫路徑及名稱<導出的命名
svnadminhotcopypath/to/repositorypath/to/backup–clean-logs
我的svn是搭建在windows上的,用visualsvn挺方便,參考網上的bat備份svn的命令,我寫了一個備份和還原全部版本庫的bat腳本,備份,需要把腳本放在版本庫根目錄下運行,例如dumpall.bat,不指定參數則備份到當前目錄下,否則備份到指定目錄。
【編輯推薦】
- 深入剖析:Subversion1.5.5和Apache2.2.9在Windows下的完美結合
- Subversion和TortoiseSVN如何在Windows下進行構建SVN版本控制
- 在Linux下subversion和apache安裝配置
- 術語匯編:簡單剖析Subversion Eclipse
- 面向 Subversion 用戶的 Git入門指南