源機器:192.168.1.1
備份機器:192.168.1.2
前提條件:
1、兩臺機器的網絡是連通的
2、兩臺機器必須同時安裝了SVN服務器
假設:
源機器上需要同步的庫名為autoSync,訪問地址為:svn://192.168.1.1/autoSync,對其具備讀寫權限的賬戶:sync/sync
備份機器配置:
1、創建與源機器庫名相同的空庫
# 假設備份機器的SVN根目錄建立在 /home/backup/svn/repository下
svnadmin create /home/backup/svn/repository/autoSync2、配置備份機器上的autoSync
分別修改conf下的svnserve.conf、passwd、authz,根據實際情況配置,假設創建了用戶sync/sync,對庫autoSync具備讀寫權限,配置方法略,配置完成后啟動SVN服務
3、創建并修改pre-revprop-change文件
cd /home/backup/svn/repository/autoSync/hooks
cp pre-revprop-change.tmpl pre-revprop-change
vi pre-revprop-change 將文件末尾的“exit 1”修改為“exit 0”即可,保存退出
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 0

增加可執行權限
chmod 755 pre-revprop-change4、初始化
命令:
svnsync init --username 用戶名 --password 密碼 備份機器庫URL 源機器庫URL
說明:
用戶名和密碼是對源機器SVN庫具備讀寫權限的SVN用戶
示例:
svnsync init --username sync --password sync svn://192.168.1.2/autoSync svn://192.168.1.1/autoSync5、首次同步
首次同步即為一次全備份過程,在此期間請停止客戶端段源機器哦一切操作(提交代碼等)
命令:
svnsync sync 備份機器庫URL
示例:
svnsync sync svn://192.168.1.2/autoSync源機器配置
6、增量自動同步配置
創建并修改post-commit文件
# 假設源機器的SVN根目錄建立在 /home/svn/repository下
cd /home/svn/repository/autoSync/hooks
cp post-commit.tmpl post-commit
vi post-commit在文件末尾追加:svnsync sync --non-interactive 備份機器庫URL --username 用戶名 --password 密碼
說明:
用戶名和密碼是對備份機器SVN庫具備讀寫權限的SVN用戶
示例:
svnsync sync --non-interactive svn://192.168.1.2/autoSync --username sync --password sync7、術語
配置完成,今后客戶端再向SVN(192.168.1.1)提交文件時,會自動觸發源機器(192.168.1.1)向備份機器(192.168.1.2)提交更新
8、版本庫UUID一致性
首先查看源機器庫的UUID,假設得到的是:fcdcbee9-6be3-4575-8d4a-681ec15ad8e0
svnlook uuid svn://192.168.1.1/autoSync更新備份機器庫的UUID為源機器庫的UUID
svnadmin setuuid svn://192.168.1.2/autoSync fcdcbee9-6be3-4575-8d4a-681ec15ad8e0