2010-08-25 229 views
1

幾個月前,我們的VisualSVN服務器資料庫得到了創建多個存儲庫是一個單一的根目錄下存在,結構看起來如下:視覺SVN多個存儲庫備份

庫位於C:\Repositories\root

root 
-branches 
-tags 
-trunk 
--repo1 
---folder1 
---folder2 
--repo2 
---folder1 
---folder2 

我能夠使用svn list命令(svn list file:///c:/Repositories/root/trunk/repo1)迭代repo1和repo2文件夾,現在我想備份repo1和repo2。

我可以在根級別做備份,而備份文件的大小太大,想在備份庫級別備份。

我試圖用爲svnadmin dump file:///c:/Repositories/root/trunk/repo1 > D:\repo1-backup.db

拋出一個錯誤說「svnadmin: file:///c:/Repositories/root/trunk/repo1「是一個URL時,它應該是路徑」。錯誤是有道理的,我用URL而不是文件系統路徑。

我去了幫助,發現我可以使用,還沒有嘗試過呢!

1)備份整個根 svnadmin的轉儲C:\庫\根>回購-轉儲文件 2)使用過濾流以包括repo1 過濾流包括repo1 <回購-轉儲文件> repo1-轉儲文件

我擔心step1,它導致我的磁盤上的大文件。想知道是否有其他方法來備份我的存儲庫。

回答

0

據我所知,沒有辦法使用svndump從存儲庫中獲取單個路徑。

我認爲你確實要做好整個事情的轉儲,然後確實使用svndumpfilter就可以了。

+0

擔心地嘗試此,傾倒了整個事情,吃我的磁盤空間很大。 似乎沒有其他的選擇,我正確嗎? – user430404 2010-08-25 09:39:19

+0

@user no,我沒有看到任何。也許你應該把版本庫分成幾個更小的版本。 – 2010-08-25 09:40:42

0

您有非常奇怪的存儲庫結構。
通常,repo1和repo2將是獨立的頂層存儲庫,每個分支,標籤和樹幹都位於其中。

但是你知道,如果你有fsfs作爲數據庫結構,你可以通過文件備份來做一個增量文件,並且每次只備份較新的文件。

+0

是的,它的奇怪的存儲庫似乎在這裏使用了Berkeley DB。任何其他方法? – user430404 2010-08-25 09:47:29

+0

如果您無法將其轉換爲fsfs,您至少可以使用[svnadmin hotcopy] [1],然後對該副本執行常規文件備份。 [1]:http://svnbook.red-bean.com/en/1.0/re33.html – 2010-08-25 11:26:09

0

SVNAdmin可以分別備份每個存儲庫。如果您有多個存儲庫,則必須單獨備份。您可以編寫一個腳本(例如,Windows中的bat,vbs),以便自動備份所有存儲庫。
備份repo1使用下面的命令:

svnadmin.exe dump c:\Repositories\root\trunk\repo1 > D:\repo1-backup.bak 

下面的腳本多個倉庫使用:
dump_repos.bat

cd c:\Repositories\root\trunk\ 
dir /A:D /B> dirs.tmp 
FOR /F %%i IN (dirs.tmp) DO (
"svnadmin.exe" dump %%i > %%i.svn 
)