jasmine214--love

          只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          Subversion庫遷移及備份方案

          Posted on 2010-09-26 10:54 幻海藍夢 閱讀(1713) 評論(0)  編輯  收藏 所屬分類: Linux版本管理

          在做遷移操作前,請停止對svn進行提交操作。

          1. 遷移方案(采用dump -load方案):

          源SVN服務器:192.168.1.200,Windows服務器

          目標SVN服務器:192.168.1.201,Windows服務器。采用CollabNet Subversion Server,假定subversion安裝在D:\Program Files\CollabNet Subversion Server上,SVN的Repository為d:\Subversion\svnbackup

          也即Windows服務中,可執行文件的路徑為:

          “d:\Program Files\CollabNet Subversion Server\svnserve.exe” –service -r “d:\Subversion\svnbackup” –listen-port “3690″

          由于目前在subversion服務器上實際上只有svn://192.168.1.200/rd目錄下才有內容,因此只需要遷移svn://192.168.1.201/rd下的內容,步驟如下:

          1、 在源服務器192.168.1.200上執行dump操作

          注意此處實際上把repository中所有的目錄都備份了,需要在load時候采用svndumpfilter命令過濾需要的目錄。

          svnadmin dump D:\Subversion\svnworkspace\bak >svn_all_20080520.dump

          2、 在192.168.1.201上創建svnbackup Repository

          svnadmin create d:\Subversion\svnbackup

          3、 下載一個windows 版本gnu 工具(例如http://sourceforge.net/projects/gnuwin32/),主要是使用cat方法

          4、 將dump文件拷貝到上并執行load操作

                  cat svn_all_20080520.dump | svndumpfilter --include:rd >svn_rd_20080520.dump

          5、 執行svnadmin load

                  svnadmin load d:\Subversion\svnbackup < svn_rd_20080520.dump

          6、 在192.168.1.201上配置svnserve.conf、passwd、authz文件

          2. 遷移方案(采用svnsync方案)

          從subversion 1.4.4開始,提供了svnsync命令,可用于Subversion的庫遷移和備份,這里我們用于備份操作的初始化同步。

          假定從源服務器192.168.1.201備份到192.168.1.88

          SVN服務器:192.168.1.201,Windows服務器,采用CollabNet Subversion Server,假定subversion安裝在D:\Program Files\CollabNet Subversion Server上,SVN的Repository為d:\Subversion\svnbackup。

          備份服務器: 192.168.1.88,Redhat As 4服務器

          采用svnsync進行數據遷移,方法如下:

          1、 在備份服務器192.168.1.88上創建源服務器192.168.1.201上對應的備份庫目錄

          mkdir /opt/subversion

          svnadmin create  /opt/subversion/svnbackup

          2、在備份服務器192.168.1.88上啟用鉤子文件

          cd  /opt/subversion/svnbackup/hooks

          echo “#!/bin/sh”> pre-revprop-change

          chmod 755 pre-revprop-change

          3、在備份服務器192.168.1.88上運行svnsync init命令

          svnsync init file:////opt/subversion/svnbackup  svn://192.168.1.201 –username username –password password

          注意,svnsync的語法為:svnsync init DEST SOURCE

          4、在備份服務器192.168.1.88上執行同步操作

          svnsync sync file:////opt/subversion/svnbackup

          由于svnsyc只能同步整個svn庫,并不能同步指定的項目,因此建議遷移時候使用dump-load方案,備份時候采用svnsync方案

          3. 備份方案:

          為保證svn服務器的安全,由腳本每天定時對svn庫進行備份,以保證svn庫的安全性。備份仍然采用svnsync來完成。

          1. 在192.168.1.88  上安裝subversion 服務器端

          2. 在192.168.1.88上創建備份用戶帳號svnsync,以供192.168.1.201能夠以此帳號實時把變更的同步到192.168.1.88上

          配置文件svnserve.conf

          [general]

          anon-access = none

          auth-access = write

          password-db = passwd

          authz-db = authz

          配置文件passwd

          svnsync=svnsync

          配置文件authz

          [groups]

          developer = svnsync

          [/]

          @developer=rw

          * =

          3. 在備份機上開啟iptables的3690端口

          4. 在備份機192.168.1.88上創建備份庫目錄

          svnadmin create /opt/subversion/svnbackup

          chown –R svnsync:svnsync  /opt/subversion/svnbackup

          5. 按照上述采用svnsync方案的步驟,將庫同步到192.168.1.88上,初始化svn庫

          cd  /opt/subversion/svnbackup/hooks

          echo “#!/bin/sh”> pre-revprop-change

          chmod 755 pre-revprop-change

          svnsync init file:////opt/subversion/svnbackup  svn://192.168.1.201 –username username –password password

          svnsync sync file:////opt/subversion/svnbackup

          6. 在源服務器192.168.1.201上,創建鉤子文件,保證192.168.1.201上的變動實時同步到192.168.1.88上:

          post-commit
          # Propagate the data to the remote repository
          D:\Program Files\CollabNet Subversion Server\svnsync synchronize --username svnsync --password svnsync  svn:// 192.168.1.88
          post-rev-changes
          # Propagating changes to the remote repository.
          D:\Program Files\CollabNet Subversion Server\bin\svnsync copy-revprops --username svnsync --password svnsync  svn:// 192.168.1.88 $REV  
          4. 參考文檔:

          http://blog.notreally.org/articles/2006/11/30/setting-up-a-subversion-mirror-repository-using-svnsync/

          http://whynotwiki.com/How_I_moved_my_code_repository_to_Google_Code

          原文:http://www.yeeach.com/2008/05/20/subversion%E5%BA%93%E8%BF%81%E7%A7%BB%E5%8F%8A%E5%A4%87%E4%BB%BD%E6%96%B9%E6%A1%88/
          主站蜘蛛池模板: 渝中区| 涞源县| 弥渡县| 吴旗县| 雷波县| 五常市| 兴宁市| 柏乡县| 阳城县| 闵行区| 邵阳市| 东安县| 湟源县| 迁安市| 辉南县| 新干县| 云浮市| 原阳县| 阿拉善盟| 江阴市| 辽阳市| 比如县| 湘潭市| 江山市| 浪卡子县| 浦县| 莎车县| 从化市| 华亭县| 蕉岭县| 兰州市| 枞阳县| 邻水| 盐池县| 晋城| 绍兴县| 蒙城县| 集贤县| 上蔡县| 长兴县| 探索|