使用rsync命令进行SVN备份

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

我使用命令rsync -avz myrepo.

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

谢谢

解决方法

简介:只要您没有备份当前处于活动状态的存储库,rsync就可以完全用于备份svn存储库.我怀疑您正在尝试备份有问题的活动存储库.

详情:

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

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

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

>使用hot-backup.py对存储库进行完整备份,同时它是免费提供的Version Control with Subversion as described in this section,通常被认为是推荐阅读.这不适合直接用于远程备份,因为它会导致每次都通过线路发送完整的repo,但是您可以备份到临时本地区域并执行基于rsync(或其他任何)的备份.而不是实时存储库.
>如果您在Linux上运行并使用LVM进行驱动器分区,则可以使用LVM的快照工具执行与选项1中所述类似的功能.有关该技术的示例文档,请参阅herehere.这意味着在短时间内停止对SNV服务的访问,持续创建快照所需的时间长度,但这几乎不是一个问题,而不是需要为整个备份操作停止它.
>使用实时存储库的增量备份,也在上面的SVN书中提到过.

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

hot-backup.py方法的优势在于,如果您还没有本地备份,也可以为您提供本地备份 – 如果您将“热拷贝”版本存储在另一台计算机上,则可以比恢复时间更快地恢复如果主机在不影响另一台机器的情况下死机(例如驱动器控制器故障),则进行远程复制.除非您已经使用LVM并且熟悉它,否则实现起来也可能更简单.

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

总而言之,rsync对于备份svn存储库应该是完全正常的(就像许多其他技术一样,但我自己在大多数用例中都非常喜欢rsync)只要你没有备份当前活动的存储库 – 您需要从某种形式的快照停止服务或备份.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...