Subversion的WebDAV 模式就是Subversion和Apache2集成后的運行模式,Debian下這一模式的實現(xiàn)可以參考
http://www.subversion.org.cn/svnbook/1.2/index.html 或者http://man.chinaunix.net/linux/debian/debian_learning/ch09s14.html
只需注意這兩個文檔的最后添加用戶的地方都存在一點小問題,添加第二個用戶的時候不需要有參數(shù)-c了,而且在Debian環(huán)境下,其實沒有htpasswd2而只有htpasswd這個命令。
我們假定Subversion的WebDAV 在Debian下已經(jīng)配置成功,訪問地址是http://hostname/svn,Subversion實際庫采用FSFS數(shù)據(jù)存儲結構,放置在/var/svnlib下。
我們要動態(tài)備份/var/svnlib到/back/svnlib_bak,/back是不同于/var的獨立磁盤分區(qū),這樣才有更高的安全度。
在Debian下有subversion的備份工具,安裝subversion時是不自動安裝的,需要單獨安裝,安裝命令
#apt-get update
#apt-get install subversion-tools
這樣在系統(tǒng)中就有了svn-fast-backup,svn-backup-dumps ,svn-hot-backup 等命令,放置在/usr/bin下面了。
我們的動態(tài)備份就是在每次提交后自動的進行增量備份,這樣可以保障在/var/svnlib出故障后,可以迅速的通過拷貝/back/svnlib_bak下的數(shù)據(jù)重建版本庫,甚至可以直接在apache下通過設置讓/back/svnlib_bak作為臨時版本庫。
我們將涉及subversion的鉤子腳本功能(相關內(nèi)容參考http://www.subversion.org.cn/svnbook/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks)
按要求在/var/svnlib/hooks/下創(chuàng)建了post-commit文件,其內(nèi)容如下:
#!/bin/sh
# 增量備份本版本庫到指定目錄,在目標目錄保存本版本庫的最新16個備份
# (svn-fast-backup -k 16)中的-k 16來實現(xiàn),你可以設置你需要的數(shù)量
# 需要系統(tǒng)安裝subversion-tools工具包,將使用其中的svn-fast-backup
# 工具。
# 編寫: xdsnet
# 日期:2007.09.14
# 本文件應該有運行權限
# 定義備份源和目標,需要保證文件權限,如果是通過http的WebDav訪問,
# 權限為www-data
FORBACK=$1 #備份版本庫路徑
BACKBASE='/back/svnlib_bak/'
BACKEND='_bak'
TOBACK=${BACKBASE}`basename ${FORBACK}`${BACKEND} #備份位置
if [ -d ${TOBACK} ];then
/usr/bin/svn-fast-backup -k 16 -q ${FORBACK} ${TOBACK}
else
mkdir -p ${TOBACK}&&/usr/bin/svn-fast-backup -k 16 -q ${FORBACK} ${TOBACK}
# 目錄不存在則創(chuàng)建目錄成功后備份
fi
修改這個文件的所有者為www-data,并添加運行權限
#chown www-data.www-data /var/svnlib/hooks/post-commit
#chmod +x /var/svnlib/hooks/post-commit
保證/back目錄www-data是可寫的或者預先建立BACKBASE='/back/svnlib_bak并使之允許www-data是可寫的。
這樣所有的配置就完成了,在下次有版本提交的時候,程序會自動的在/back/svnlib_bak下建立一個名為
“svnlib-版本號”的目錄,該目錄是最新的/var/svnlib的一個快照。而且在/back/svnlib_bak下最多有16個(這是程序腳本中定義的,你可以設置)諸如“svnlib-版本號”的目錄,它們是版本號最高的16個。
-------------------------------------------
可能有人要問為什么這叫動態(tài)備份,如果版本庫很大是不是很浪費空間?
其實不用怕,因為svn-fast-backup會自動搜索備份目標下的相同文件,它們其實只保存了一份,其它都是對應的相當于硬鏈接的文件,不額外增加太多磁盤空間占用,這樣實際上每個版本備份僅僅是增加了必須的,因版本改變產(chǎn)生的變化(包括文件的,也包括操作的歷史記錄等)。
參考:
http://www.subversion.org.cn/svnbook/1.2/index.html
http://www.debsir.org/main/?q=node/58
http://man.chinaunix.net/linux/debian/debian_learning/ch09s14.html