說明:本次遷移是將svn從windows平臺遷移到linux平臺。windows使用的是visualSvn,linux使用的是svnserv。目標是能夠保留現有的倉庫、用戶、權限,並且讓客戶端最小化的更改配置。本次要遷移的倉庫位於D:\repo\first,目標是/data/svn/first。默認linux上已經裝好svnserv,沒裝好的先把軟件安裝好。
方案:通過svnadmin內置的dump工具導出所有數據。linux平臺直接導入對應的倉庫,修改對應的配置文件使得svnserv能夠正常提供服務。網關機做端口轉發使得外網可以訪問到倉庫。
操作流程:
①:在windows上命令行模式下通過svnadmin命令導出倉庫
svnadmin dump D:\repo\first -F D:repofirst.dump
②:使用linux上rz命令將導出的文件傳輸到linux系統
rz -be
然後選擇對應文件
如果提示 command not found 表示沒有安裝lrzsz工具,使用下面命令進行安裝。
yum install -y lrzsz
③:創建與windows端名稱相同的倉庫
svnadmin create /data/svn/first
④:導入倉庫
切換到與新建的倉庫同級目錄,執行load命令
cd /data/svn
svnadmin load first < /data/repofirst.dump
⑤:導入用戶和用戶組信息
D:\repo\htpasswd //用戶賬號和密碼
D:\repo\first\conf\VisualSVN-SvnAuthz.ini //倉庫目錄的權限信息
D:\repo\groups.conf //用戶組
用戶遷移
將 D:\repo\htpasswd 內容 拷貝到 /data/svn/first/conf/passwd中,問題是windows中的密碼是加密的,這個就沒辦法只能重置了。
用戶組遷移
將 D:\repo\groups.conf 內容拷貝到/data/svn/first/conf/authz對應的【groups】下。
倉庫目錄權限遷移
將 D:\repo\first\conf\VisualSVN-SvnAuthz.ini 內容拷貝到/data/svn/first/conf/authz用戶組內容後面。
⑥:修改配置文件並重啓服務
vim /data/svn/first/conf/svnserve.conf
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
force-username-case = none
保存文件並重啓
svnserve -d -r /data/svn/
⑦:測試使用
cd /data
svn co svn://127.0.0.1/first/dir1 --username=lee --password==lee
一般情況下是能夠正常使用了,如果出現svn: E170001: Authorization failed請覈對下目錄有沒有錯誤。svn的權限是根據目錄來分配的,然後去找找看配置文件有沒有把權限正確配置。還不行的話就檢查下配置項前面是不是有空格。