Waht 可能是“svnrdump”和“svnadmin dump”产生不同大小转储的原因?
Posted
技术标签:
【中文标题】Waht 可能是“svnrdump”和“svnadmin dump”产生不同大小转储的原因?【英文标题】:Waht could be the reason for "svnrdump" and "svnadmin dump" to produce different sized dumps? 【发布时间】:2017-02-07 17:48:06 【问题描述】:我尝试将多个存储库迁移到不同的 SVN 服务器。 我对源服务器具有 root 访问权限,因此我首先尝试使用“svnadmin dump”将存储库本地转储到服务器上。这适用于前几个存储库,直到我遇到需要转储的存储库比服务器有空磁盘空间的存储库。
因此,我转而使用“svnrdump dump”将存储库转储到远程计算机上。由于我在源服务器上的 root 对服务器没有 svn 读取访问权限,因此我使用了我的 svn 用户帐户。该帐户具有对所有存储库的完全读写访问权限。 为了确保我再次使用“svnrdump dump”转储了所有存储库(不仅仅是丢失的存储库)
完成后,我最终得到了一些被转储两次的存储库(一次使用 svnadmin,一次使用 svnrdump)。 我突然注意到,使用“svnadmin dump”创建的转储之一的转储大小为 115 MB,而使用“svnrdump dump”创建的转储只有 78 MB。
SVN 服务器是一台带有 SVN 1.6.17 的 unix 机器,而用于 svnrdump 的远程机器是一台带有 Tortoise-SVN 1.9.4 和 SVN 1.9.4 的 windows 机器。
所以,现在我不确定我用“svnrdump”制作的转储是否真的正确。 不同的大小可能是因为两个帐户之间的差异(一方面是服务器的根,另一方面是 svn 用户)? 或者可能与svn的不同版本有关?
问候, 塞巴斯蒂安
【问题讨论】:
所以,澄清一下,您在托管存储库的机器上运行svnadmin dump
,并在客户端(您的Windows机器)上运行svnrdump
?这些是截然不同的版本(1.6 与 1.9);我敢打赌两者之间会发生一些变化。
是的,您的说明是正确的。我们使用的服务器是在一段时间前(几年?)建立的,它似乎从未更新过。我不确定要多久,因为通常我与该服务器无关。 (获得管理员权限只是为了转储文件)
【参考方案1】:
当您使用 1.6.x 客户端时,转储文件包含每个修订版的完整信息。
svn 客户端版本 1.8.x 及更高版本仅包含从修订到修订的增量信息,因此它们要小得多。
svnadmin dump
有一个开关--deltas
使用这些增量生成转储,从而生成更小的转储文件。 svnrdump
无条件这样做是为了减少网络流量。
【讨论】:
感谢 Stefan,这解释了我的问题。我忘记在 svnadmin 转储中添加 --delta 选项。我用“--deltas”试了一下,它产生了一个(几乎)大小相同的转储。 (差异为 200 Kb,我将其归咎于不同的版本。)以上是关于Waht 可能是“svnrdump”和“svnadmin dump”产生不同大小转储的原因?的主要内容,如果未能解决你的问题,请参考以下文章