我想每天使用一次来自cronjob的tar和ftp备份我的SVN repo。这很容易,但我想确保在备份时没有提交等。虽然有时候白天/晚上这种情况极不可能,但我宁愿不依赖它,因为如果我已经在晚上处于危机中,我最不需要的是我的SVN或我的备份获取搞砸了。
我正在寻找一些非常简单但有效的保障措施。如果SVN客户端在备份运行时出错(它不会花那么长时间),这没关系。我应该使用
我开始在serverfault上发布这个,但后来决定它稍微接近编程而不是sysadmin,特别是如果涉及钩子。如果您不这么认为,请随意移动它。
答案 0 :(得分:6)
安全备份的理论方法是使用svnadmin hotcopy
命令(more details here)。它基本上是一个存储库的副本(不是转储,副本),在此期间要小心阻止所有操作。
此操作非常快,所以我不认为任何客户端会出现错误,但它们可能会遇到一些延迟(取决于服务器负载等)。
您可以在Apache subversion project website上找到脚本示例。
如果你进行转储,除了花费大量时间外,你不会确定它会以原子方式完成。转储对
很有用在选择转储之前,无论如何,如果您愿意,我建议您先手动操作,以确保它不会太长。确保还压缩那些比存储库(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 dump
到gzip
或其他一些压缩程序的结果。
答案 3 :(得分:0)
使用svnadmin dump
进行备份,然后使用cURL
进行FTP上传。
答案 4 :(得分:0)
这里有一篇关于repository backup的文字以及为什么要使用svnadmin hotcopy
答案 5 :(得分:0)
我建议使用this svn-backup tool。它结合了完整和增量存储库备份的优点,并且每个存储库只会生成一个备份文件,无论它运行多少次或存储库中有多少个修订。此特定脚本的运行速度比常规svnadmin转储快得多,因为它只会转储自上次备份以来的其他修订。
我使用此脚本将非常活跃的subversion服务器的备份时间从8小时减少到大约20分钟。备份过程完成后,您可以上传到FTP服务器。