在实时网站上维护备份和修订控制的最佳解决方案是什么?

时间:2008-08-26 02:32:40

标签: version-control backup hosting

在实时网站上维护备份和修订控制的最佳解决方案是什么?

作为我工作的一部分,我与几个实时网站合作。我们需要一种有效的方法来维护实时文件夹的备份。此外,更新这些网站可能会非常痛苦,特别是如果因任何原因导致实际环境发生变化。

什么是理想的无障碍源控制。我实施了SVN一段时间,这是一个很好的备份和修订控制的半解决方案(容易恢复临时或重大变化)等。

不幸的是,SVN将.SVN隐藏目录放在各处导致问题,特别是当其他开发人员进行文件夹结构更改或复制/移动网站目录时。我听说过这是一个关于教育等问题的论点,但SVN采用的方法对我们来说根本不是一个实用的解决方案。

我在想,增量备份解决方案可能会更好。

其他可能性包括:

  1. SVK,这只是命令行而成为问题。此外,我不确定这是多么合适。
  2. Mercurial,可能有一些隐藏分布式组件的触发器,在这种情况下不需要,对于其他开发人员来说会不必要地复杂化。

    我简单地用Mercurial进行了实验,但找不到一个很好的方法让存储库分离并与实时文件夹工作副本保持同步。也许作为源控制解决方案(使存储库和实时文件夹在同一个地方)与另一个备份解决方案相结合,这可能是最佳选择。

    Mercurial的一个缺点是它不会在源代码管理下放置空文件夹,这对于经常有空文件夹作为文件上传等占位符位置的网站来说是个问题。

  3. Rsync,我还没有真正调查过。
  4. 我非常感谢您就维护实时网站备份的最佳方式提出建议,理想情况是通过快速检索过去版本的方法。

    回答:

    • @Kibbee

      • 除了VSS以及缺乏时间/精力去学习其他任何东西之外,对教育的重视程度并不高。

      • 我猜xcopy / 7-zip方法听起来很合理,但很快会占用很多空间吗?

      • 就源代码控制而言,我认为我希望源代码控制只是说“这是现在文件夹的状态,我会处理它,如果我无法匹配的东西那是你的错,我只是开始新的历史“而不是努力失败。

    • @Steve M

      • 是的,这是一种更好的方式,但需要进行重大的文化变革。话虽如此,我非常喜欢这种方法。
    • @mk

      • 很好,我没有考虑使用Rsync进行部署。这只是上传差异吗?每次我们进行更改时覆盖整个实时目录都会因站点停机而出现问题。

    我仍然很想知道是否还有更传统的选择

4 个答案:

答案 0 :(得分:4)

你仍然可以使用SVN,但是不要在你的实时环境中进行结账,而是进行导出,这样就不会创建.svn目录了。当然,缺点是您的实时环境不会发生任何代码更改。这是一件好事。

作为一般规则,绝不允许对生产系统进行代码更改。应该在开发/测试/ UAT环境中进行更改并进行测试,然后一旦确认为OK,就可以使用RELEASE-x-x-x等标记SVN中的代码。然后,在实时系统上,使用该标记导出代码。

答案 1 :(得分:2)

我们使用选项3. Rsync。我写了一个bash脚本来执行此操作以及一些额外的检查,但这里有它的基础知识。

  1. 制作推送活动的标签。
  2. 在该标记上运行svn export。
  3. rsync to live。
  4. 到目前为止,它一直在努力。我们不必担心用户冲突,也没有单独的用户在生产机器上运行svn。

答案 2 :(得分:1)

如果人们移动,删除或添加文件而没有告诉源控制系统,那么您选择的任何源控制解决方案都会遇到问题。我不知道有任何源代码控制项可以解决这个问题。

如果您无法教育项目人员[1],那么您可能只需要使用每日快照。像使用xcopy到网络驱动器的批处理文件一样简单,并且可能在命令行上使用7-zip压缩它以便不占用太多空间可能是最简单的解决方案。

[1]我非常不相信这一点,可能只是一个人太固执,不愿意学习,或做“额外工作”的情况。没关系源控件在必须返回以前的版本时可以保存多少时间,或者2个人编辑了同一个文件。

答案 3 :(得分:1)

rsync只会上传差异。我没有亲自使用它,但Mark Pilgrim很久以前写过关于它如何handles binary diffs brilliantly

svn + rsync听起来像是一个很棒的解决方案。我将来必须尝试这一点。