备份SVN存储库所需的文件

时间:2009-11-06 12:33:45

标签: svn backup directory

我需要备份我的SVN存储库的一个文件夹。为此,我尝试使用svndump和svndumpfilter命令但没有用。

任何人都可以通过一个例子解释如何做到这一点。

更新

我有一个存储库,我有一个文件夹说“测试”。除了这个“测试”,我的存储库中还有一些文件夹/项目。如果我想要对我的存储库进行完整备份,则会消耗更多内存(30 gb),因此我只想将带有历史记录的“Test”文件夹转移到另一个存储库,这样我就可以只进行“测试”的定期备份文件夹(新存储库),因为它将占用更少的内存。 (我不需要对“Test”以外的其他文件夹进行常规备份)

我该怎么做?

3 个答案:

答案 0 :(得分:4)

如果您想要的是备份文件本身的当前状态(并且实际上并不想要完整版历史),请使用{{ 3}}而不是。

如果 试图备份历史记录,那么我同意Rohith的回答。

答案 1 :(得分:3)

由于SVN在每次提交时都会对整个树进行版本化,因此如果您尝试仅备份源树的一部分然后尝试恢复该备份,则可能会遇到麻烦。

答案 2 :(得分:2)

根据您的跟进,您要做的是从单个原始仓库生成两个新的存储库。

SVN红皮书解释得很好: http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.filtering

简而言之,您从一个 origin repo开始并创建一个dumpfile,然后使用 svndumpfilter 生成两个过滤的dumpfile(一个带有Test,一个没有)

svnadmin dump origin > origin.dump
svndumpfilter include Test < origin.dump > testonly.dump
svndumpfilter exclude Test < origin.dump > no-test.dump

如果您感觉活泼,可以编辑两个过滤的转储文件以排除根节点创建语句(在文档链接中讨论)。

创建新的回购:

svnadmin create testrepo
svnadmin create neworigin

现在,加载dumpfile:

svnadmin load --ignore-uuid testrepo < testonly.dump
svnadmin load --ignore-uuid neworigin < no-test.dump

现在,您有两个新的repos,因此您暂停 origin repo中的开发并转移到使用 neworigin testrepo repos 。从那里,您可以使用svnadmin dump为 testrepo 生成dumpfile,并将dumpfile放入正常的备份过程中。

svnadmin dump testrepo > testrepo-backup.dump