我有一台装有 CentOS 5.6 的服务器,上面有 SVN,我想每天对更改进行增量备份,同时每周进行一次完整备份。我需要将其备份到将连接到服务器的外部硬盘上。
我确实尝试了提供的示例迈克·鲁贝尔使用 rsync,但它实际上并没有进行增量备份 - 它正在进行完整备份。不幸的是,我不太熟悉 bash 脚本 :/
任何帮助表示感谢
答案1
进行备份有两个原因:
- 灾难恢复(重大硬件故障、自然灾害等)
- 哦,@!#%,我需要将该文件恢复到昨天的状态。
根据定义,定期向 SVN 提交可以解决原因 2。如果您删除或覆盖了关键文件,只需从存储库中拉出旧版本即可。
剩下的就是原因 1。只要您拥有经过良好验证的异地存储库副本,您就应该万事俱备。每天制作完整副本,定期测试检查复制的存储库,这样您就万事俱备了。
如果是我,我会确保我的存储库使用 FSFS 后端(显然这是自 1.2 以来的默认设置,但我刚开始时不是)。这会将您的存储库存储在文件系统上的常规文件中,您可以使用 rsync 备份它们,svnadmin 热复制(示例脚本在这里) 或您想要的任何其他工具。
答案2
rsync
每天查看 SVN 存储库将为您提供存储库的“当前最新”备份。
第一个rsync
是完整备份,因为每个文件最终都会通过网络复制。
后续的rsync
备份是“增量备份”,因为同步算法确保只发送更改,但不是就恢复而言是增量的(您将无法恢复上周三的存储库 - 您在 rsync 目标上的版本就是您拥有的版本)。
在你的情况下,如果你关心的只是保留一份好的存储库副本,那么 rsync 可能就足够了。如果你需要能够恢复到特定日期的粒度,那么你应该研究类似的解决方案巴库拉或其他专为备份数据而设计的备份软件解决方案。
备份软件具有灵活的调度选项。Bacula
等软件的另一个主要优势是您可以使用它来备份其他内容(例如,所有生产服务器)。在第一次发生灾难性硬件故障后,当您能够从备份中恢复所有数据时,这一点将显得更为重要 :-)
最终,您需要考虑进行备份的目标(具体来说:您希望能够恢复什么?和重建你的东西需要多少工作不能恢复?),然后选择相应的备份策略。
答案3
我发现此链接对于周末的增量备份和完整备份非常有用。