標籤:java 使用 os strong 檔案 資料 管理 new
前幾天在做一個項目的時候,因為需要,需要將Server A 上SVN倉庫 repos1中的項目pro1遷移到Server B 上的SVN倉庫中,首先想到的是:通過複製,但是仔細一想,這樣是不可能的;然後想到的是先把項目pro1 checkout到本地,然後再 將本地的項目 import 到 ServerB的svn倉庫中,但這樣一來,ServerB上的SVN倉庫中 就好比完全是一個新的pro1項目了,也就失去了svn管理的意義了。下面有一種方法可以解決:
(在進行下面的操作時,請注意備份倉庫資料,以免操作出錯,損壞資料;同時保證需要遷移的項目,都已經commit,以免丟失修改)
1.首先關閉兩台伺服器的svn所有服務,比如(apache、svn),(以避免在進行遷移時又有其他的使用者訪問提交,更新什麼的...
關閉svn
killall svnserve
2.將ServerA上的 項目pro1所在的倉庫進行備份,使用命令:
svnadmin dump oldrepos > reposdumpfile
如:svnadmin dump javaweb > javaweb2
上面的 oldrepos 表示伺服器Server1上需要備份的倉庫,如:E:\svn_root\repos1;
reposdumpfile表示一個中轉的檔案,檔案名稱隨意;
運行完上面的命名後,檔案reposdumpfile就儲存了倉庫oldrepos的資訊和所有項目;
3.如果需要將Server A上repos1中的所有項目遷移到Server2上,則將reposdumpfile檔案直接拷貝到Server2上,然後轉到 步驟5;
【可用一個軟體直接拷貝到本地,然後用軟體拷貝到新的伺服器上】
4.如果我們只需要repos1倉庫中的pro1則我們需還要對reposdumpfile檔案進行過濾,命令如下:
svndumpfilter include pro1 < reposdumpfile< pro1dumpfile
上面的 include 表示 包含的意思,也就是說,將reposdumpfile中的 pro1 的項目取來放到檔案 pro1dumpfile 中;如果使用 exclude 這表示相反的意思,將不是項目pro1的項目存放到檔案中去;然後將pro1dumpfile檔案拷貝到Server2上;
5.在Server2上運行如下命令,則完成了項目的遷移;
svnadmin load newrepos < pro1dumpfile
如:svnadmin load javaweb < javaweb2
上面的newrepos表示:Server2電腦上的 svn倉庫的路徑 如:F:\svn_root\repos2;
6.最後開啟svn服務,這樣就成功的將項目遷移到了其他倉庫中
如:svnserve -d -r /opt/svndata啟動
-------------------------------------------------------
親測成功