SVN從win遷移到Linux上

工做須要把SVN從win遷移到Linux上,花了幾天時間看資料搞定,簡單記錄一下:vim

公司用的SVN環境爲 Windows server 2003 ,VisualSVN 2.1.5版本ide

1.dump出SVN數據並上傳到Linuxsvn

在Repositories處先導出其項目名列表,而後編寫一個簡單的bat腳本進行dump:編碼

好比:rest

@echo offserver

svnadmin dump C:\Repositories\baijiu > C:/test/baijiu.dump文件上傳

svnadmin dump C:\Repositories\BAS > C:/test/BAS.dumpit

把SVN數據備份dump文件及authz和htpasswd文件上傳到Linuxio

2.Linux安裝SVNclass

#yum install subversion  安裝SVN

#mkdir /opt/svn/repositories 創建版本庫目錄

#svnserve –d –r /opt/svn/repositories 啓動SVN

#killall svnserve 關閉SVN

#svnadmin create /opt/svn/repos/baijiu  創建要遷移的項目庫

#svnadmin create /opt/svn/repos/BAS

#vim /opt/svn/repos/baijiu/conf/svnserve.conf 配置用戶訪問權限

--> 

    anon-access = none
    auth-access = write
    authz-db = /opt/svn/authz
    password-db = /opt/svn/passwd

導入數據:

#svnadmin load /opt/svn/repos/baijiu < /home/oldsvnbak/baijiu.dump

#svnadmin load /opt/svn/repos/BAS < /home/oldsvnbak/BAS.dump

概括以上步驟寫個腳本進行SVN數據遷移:

#!/bin/sh
#svn migration
#2018-5-23
# linx@jmtop.com
#create and import svn-project

DIRECTORY_HOME="/home/oldsvnbak"        #存放dump文件目錄
SVN_HOME="/opt/svn/repos"                           # 版本庫目錄

projects=`cat /home/mytmp/reposlist.txt`  #項目庫名列表

#create svn-Repositories
for project in $projects;
do
    svnadmin create $SVN_HOME/$project
done

#reset svnserve.conf
find $SVN_HOME -name svnserve.conf -exec cp /home/mytmp/svnserve.conf {} \;

#import oldsvndata
for project in $projects;
do
    echo "....start load $project ........................"
    sleep 3
    svnadmin load $SVN_HOME/$project < $DIRECTORY_HOME/$project.dump
    echo "....end load ..................................."
    sleep 3

done

編寫了一個SVN的重啓腳本:

[root@svn svn]# cat restartsvnserve.sh
#!/bin/sh
#restart the svn-serve
#2018-5-23
#linx@jmtop.com

#kill old serve
killall svnserve

#start new serve
svnserve -d -r /opt/svn/repos
[root@svn svn]#

須要注意的坑:

從win上導出的項目庫名列表,上傳到Linux會有編碼問題,會致使腳本運行時報錯,說找不到庫名字

須要從新編寫項目庫名列表,在Linux上從新建立reposlist.txt文件,複製粘貼便可!

相關文章
相關標籤/搜索