将SVN存储库备份到FTP服务器有什么好方法?

时间:2009-11-10 20:53:52

标签: svn backup

我想每天使用一次来自cronjob的tar和ftp备份我的SVN repo。这很容易,但我想确保在备份时没有提交等。虽然有时候白天/晚上这种情况极不可能,但我宁愿不依赖它,因为如果我已经在晚上处于危机中,我最不需要的是我的SVN或我的备份获取搞砸了。

我正在寻找一些非常简单但有效的保障措施。如果SVN客户端在备份运行时出错(它不会花那么长时间),这没关系。我应该使用

  • 文件系统级别的内容
  • 一些SVN钩子脚本
  • 其他完全

我开始在serverfault上发布这个,但后来决定它稍微接近编程而不是sysadmin,特别是如果涉及钩子。如果您不这么认为,请随意移动它。

6 个答案:

答案 0 :(得分:6)

安全备份的理论方法是使用svnadmin hotcopy命令(more details here)。它基本上是一个存储库的副本(不是转储副本),在此期间要小心阻止所有操作。

此操作非常快,所以我不认为任何客户端会出现错误,但它们可能会遇到一些延迟(取决于服务器负载等)。

您可以在Apache subversion project website上找到脚本示例。

如果你进行转储,除了花费大量时间外,你不会确定它会以原子方式完成。转储对

很有用
  • 确保您可以从一个版本迁移到另一个版本 - 请考虑长期备份。例如,如果您的服务器从版本1.4升级到1.5或1.6,那么进行转储然后加载您的存储库以充分利用这些改进是很有趣的。在一些更激烈的升级中,这是必要的,因为存储库格式变化太大。
  • 过滤文件,或合并存储库,这些是更复杂的操作,不在此处。

在选择转储之前,无论如何,如果您愿意,我建议您先手动操作,以确保它不会太长。确保还压缩那些比存储库(hotcopy)大得多的文件 - 后者压缩得非常好。

答案 1 :(得分:3)

svnadmin dump /path/to/repo > repobackup_date

现在你可以在repobackup_date上运行tar,gzip,svnadmin应该为你控制对存储库的访问。

要恢复,请使用svnadmin load /path/to/repo < repobackup_date

答案 2 :(得分:1)

我为所有生产svn存储库执行此操作。

您应始终使用svn dump对存储库进行单文件备份。这可以确保在飞行中没有脏事务,这可能会破坏文件系统副本。然后只需使用您喜欢的ftp应用程序复制文件。

我建议先运行svn dumpgzip或其他一些压缩程序的结果。

答案 3 :(得分:0)

使用svnadmin dump进行备份,然后使用cURL进行FTP上传。

答案 4 :(得分:0)

这里有一篇关于repository backup的文字以及为什么要使用svnadmin hotcopy

答案 5 :(得分:0)

我建议使用this svn-backup tool。它结合了完整和增量存储库备份的优点,并且每个存储库只会生成一个备份文件,无论它运行多少次或存储库中有多少个修订。此特定脚本的运行速度比常规svnadmin转储快得多,因为它只会转储自上次备份以来的其他修订。

我使用此脚本将非常活跃的subversion服务器的备份时间从8小时减少到大约20分钟。备份过程完成后,您可以上传到FTP服务器。

相关问题