使用 rsync 命令的 SVN 备份

use*_*143 4 backup rsync svn

我设置了一个 cron,用于将我的 SVN 存储库(8 GB)备份到另一台服务器。但有时我会遇到错误,我觉得这不是将 svn 备份到远程服务器的正确方法。

我使用了命令 rsync -avz myrepo。

请建议我一种将 svn 备份到远程服务器的好方法。我无法压缩文件并每天传输它,因为它是 7 GB。

谢谢

Dav*_*ett 13

总结: rsync备份 svn 存储库应该完全没问题,只要您不备份当前处于活动状态的存储库。我怀疑您正在尝试备份有问题的活动存储库。

细节:

您没有说明报告了哪些错误,这使得任何诊断尝试都变得困难。这是我经常抱怨我们的用户的事情 - 如果应用程序向您提供了特定的消息,向您要求诊断/支持的人报告该特定消息,即使该消息实际上是“发生错误”或类似(因为这确实发生)。

我猜测所报告的问题与文件丢失(它们在初始扫描期间存在,但在备份完成之前被移动/重命名/删除)、被锁定或在 rsync 读取它们时明显更改有关。如果备份实时 svn 服务并且在开始备份运行之前没有完全停止 svn 服务,您将看到大多数备份技术的类似错误(或更糟糕的是:相关但未报告的问题)。

在备份运行期间停止对存储库的所有访问可能不是您的选择,即使它是在深夜完成的(因为您可能有在不同时间工作的远程开发人员)。如果是这种情况,那么有几种选择,包括:

  1. 用于hot-backup.py在存储库处于活动状态时对其进行完整备份,免费提供的带有 Subversion 的版本控制的本节所述,这通常被认为是推荐阅读。这将不适合直接用于您的远程备份,因为它会导致每次都通过线路发送完整的存储库,但是您可以将备份备份到临时本地区域并在其上执行rsync(或任何其他)基于备份的备份比实时存储库。

  2. 如果您在 Linux 上运行并使用 LVM 进行驱动器分区,您可以使用 LVM 的快照工具执行选项 1 中所述的类似功能。请参阅此处此处以获取该技术的示例文档。这确实意味着在创建快照所需的时间内停止对 SNV 服务的访问一小段时间,但这几乎是即时的,与需要在整个备份操作中停止它相比不太可能成为问题.

  3. 使用实时存储库的增量备份,在上面的 SVN 书中也提到过。

LVM 技术将比hot-backup.py-then-sync更快,但除非您已经使用并熟悉 LVM,否则在没有大量额外工作和学习的情况下无法使用。它的优点是它几乎肯定会更快,并且会使用更少的磁盘空间(尽管现在磁盘空间非常便宜)。LVM 快照在存在时确实会影响写入性能,但除非您的存储库非常繁忙并且在备份运行结束时删除快照时性能将恢复正常,否则差异不太可能明显。

hot-backup.py如果您还没有本地备份,该方法的优点是也可以为您提供本地备份 - 如果您将“热拷贝”版本存储在另一台机器上,您可以比在主计算机上恢复远程副本的速度快得多机器在不影响另一台的事件中死亡(例如驱动器控制器故障)。它也可能更容易实现,除非您已经使用 LVM 并且熟悉它。

增量备份将比这两种技术都快,但不如热复制然后同步简单,完全灾难后的恢复可能更复杂,除非您使用增量备份在另一端构建完整的存储库副本(而不仅仅是存储增量信息)。无论如何,建议在另一端重建 repo,因为这是一种测试您的备份实际上有效的方法 - 即使使用其他技术,您也应该定期测试您的备份(口头禅:备份不是一个好的备份,除非它已经过测试)。

总之rsync应该是完全正常的备份一个SVN仓库(如同许多其他的技术,但我是十足的球迷rsync在大多数情况下,用我自己),只要你没有备份的存储库是当前活动-你需要从某种形式的快照停止服务或备份。


lep*_*ole 8

如何svnsync(svn 的一部分)到另一台也运行 svn 的服务器?作为传输,您可以使用 ssh+svn。