Visual SVN多个存储库备份

时间:2010-08-25 09:12:16

标签: svn visualsvn-server

几个月前我们创建了VisualSVN Server存储库,单个根目录下存在多个存储库,结构如下所示:

存储库位于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 dump C:\ Repositories \ root>回购协议,转储文件 2)使用svndumpfilter包含repo1 svndumpfilter包括repo1< repos-dumpfile> repo1-转储文件

我担心step1,它导致我的磁盘上有大量文件。想知道有没有其他方法来备份我的存储库。

3 个答案:

答案 0 :(得分:0)

据我所知,没有办法使用svndump从存储库中获取单个路径。

我认为你确实要完成整个事情的转储,然后确实使用svndumpfilter

答案 1 :(得分:0)

您的存储库结构非常奇怪 通常repo1和repo2将是单独的顶级存储库,其中包含每个分支,标记和主干。

但是你知道如果你有fsfs作为数据库结构,你可以通过文件备份执行增量文件,每次只备份更新的文件。

答案 2 :(得分:0)

SVNAdmin可以单独备份每个存储库。如果您有多个存储库,则必须单独备份。您可以编写一个自动备份所有存储库的脚本(例如bat,vbs in windows) 备份 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
)