備份方法挺多的,目前我知道有四種
其一:
首先復制舊csvn服務器上repositories下的版本庫文件夾到新csvn服務器repositories文件夾下面(做以下修改時最好把csvn服務停掉)
然后復制舊csvn的svn_auth_file到新csvn上(相當於復制用戶密碼)
接着就是復制舊服務器上的用戶賬號信息(例如郵箱,權限等)
csvn-production-hsqldb.script 在這個文件里搜索INSERT INTO USER 然后復制這幾行,追加到新服務器上的對應文件中(這里我遇到一個問題,就是我在csvn的web管理界面可以看到我新建的用戶,但是我在這個文件中卻找不到對應的插入信息,最后發現是沒有重啟csvn的問題)
接着用舊csvn服務器上svn_access_file文件覆蓋新csvn服務器上的對應文件,該文件為用戶訪問權限(為了安全起見,最好將被替換的文件先做好一個備份,防止出現異常情況無法恢復)
最后重啟csvn,遷移就完成了。
其二:
svnadmin dump
原服務器
cd repositories
svnadmin dump svncopy/ > test.dump
復制版本庫的服務器
1056 scp root@10.0.3.107:/application/csvn/data/repositories/test.dump ./ #scp傳文件就是杠杠的
1057 ls
1058 svnadmin load test.dump #命令有錯
1059 svnadmin load /application/csvn/data/repositories/ test.dump #命令有錯
1060 svnadmin load /application/csvn/data/repositories/ < test.dump #還是有錯
1061 ls
1062 ls -l
1063 chown -R csvn:csvn test.dump #嘗試修改擁有者,無效
1064 svnadmin load /application/csvn/data/repositories/ < test.dump
1065 svnadmin create test #新建一個版本庫
1066 svnadmin load /application/csvn/data/repositories/test < test.dump #執行成功
1067 ls
1068 ls -l
1069 chown -R csvn:csvn test #配置權限
其三:
svnadmin hotcopy
服務器a:
[root@localhost repositories]# svnadmin hotcopy testb testb.hotcopy
服務器b:
1074 scp -r root@10.0.3.107:/application/csvn/data/repositories/testb.hotcopy ./
1075 ls
1076 ls -l
1077 chown -R csvn:csvn testb
1078 ls -l
1079 chown -R csvn:csvn testb.hotcopy/
其四:
svnsync
[root@node2 svnmirror]# cd /application/csvn/data/repositories/ #我選擇直接在這里備份版本庫
[root@node2 repositories]# svnadmin create bp #創建同名的備份庫
[root@node2 repositories]# svnsync init file:///application/csvn/data/repositories/bp/ http://10.0.3.107:18080/svn/bp #同步前先初始化,file后面就是我用來存放備份版本庫的路徑,后面是需要備份的版本庫路徑。然后,報錯
svnsync: E165006: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
[root@node2 repositories]# cp bp/hooks/pre-revprop-change.tmpl bp/hooks/pre-revprop-change #安全起見,pre-revprop-change是我們初始化過程中需要的文件
[root@node2 repositories]# vi bp/hooks/pre-revprop-change #不能將文件清空,只需要把最后一行的exit 1改為exit 0
[root@node2 repositories]# svnsync init file:///application/csvn/data/repositories/bp/ http://10.0.3.107:18080/svn/bp #再次嘗試初始化
Copied properties for revision 0.
[root@node2 repositories]# svnsync sync file:///application/csvn/data/repositories/bp/ #正式開始同步
Transmitting file data .
Committed revision 1.
Copied properties for revision 1.
[root@node2 repositories]# ls
bp
[root@node2 repositories]# ls -l
total 4
drwxr-xr-x 6 root root 4096 Nov 22 02:23 bp
[root@node2 repositories]# chown -R csvn:csvn bp/ #這時候進入csvn的web管理界面,會提示權限不足或者無法顯示出來,所以我們需要修改擁有者
[root@node2 repositories]# svnsync sync file:///application/csvn/data/repositories/bp/ #這個相當commit吧
Transmitting file data .
Committed revision 2.
Copied properties for revision 2.
[root@node2 repositories]# ls
編輯被同步的csvn服務器上的post-commit(本來是沒有這個文件的,需要把post-commit.tmpl 重命名為post-commit)
/application/csvn/bin/svnsync synchronize --non-interactive http://10.0.3.102:18080/svn/svncopy --username admin --password admin
那個網址為用來同步的另一台服務器svn路徑(我是直接進入csvn里面查看檢出命令,得到這個路徑的)
然后重啟csvn服務器就差不多了