2010-08-25 80 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 
)