几个月前我们创建了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,它导致我的磁盘上有大量文件。想知道有没有其他方法来备份我的存储库。
答案 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
)