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

作为我工作的一部分,我与几个实时网站合作。我们需要一种有效的方法来随着时间的推移维护活动文件夹的备份。此外,更新这些网站可能会很痛苦,特别是如果更改由于某种原因在实时环境中发生中断。

理想的情况是无麻烦的源代码控制。我实施了 SVN 一段时间,它作为备份和修订控制(轻松恢复临时或重大更改)等的半解决方案非常棒。

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

我认为增量备份解决方案可能会更好。

其他可能性包括:

  1. SVK, ,这只是命令行,这成为一个问题。此外,我不确定这是否合适。
  2. 水银, ,也许使用一些触发器来隐藏分布式组件,这在本例中是不需要的,并且对于其他开发人员来说会不必要地复杂。

    我对 Mercurial 进行了简短的实验,但找不到一种很好的方法来将存储库分开并与实时文件夹工作副本保持持续同步。也许作为源代码控制解决方案(使存储库和活动文件夹位于同一位置)与另一个备份解决方案相结合,这可能是可行的方法。

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

  3. 同步, ,我还没有真正调查过。

我非常感谢您关于维护实时网站备份的最佳方法的建议,最好是快速检索过去版本的简单方法。

答案回复:

  • @基比:

    • 与其说是教育问题,不如说是对 VSS 以外的任何东西都不熟悉,并且缺乏时间/精力去学习其他东西。

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

    • 就源代码控制而言,我想我希望源代码控制只是说“这是文件夹现在的状态,我会处理这个问题,如果我无法匹配内容,那是你的错,我”我将开始新的历史”,而不是努力失败。

  • @史蒂夫·M:

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

    • 不错,没想到用rsync来部署。这只是上传差异吗?由于站点停机,每次进行更改时覆盖整个活动目录都会出现问题。

我仍然很好奇是否有更传统的选择

有帮助吗?

解决方案

您仍然可以使用 SVN,但不是在实时环境中进行签出,而是进行导出,这样就不会创建 .svn 目录。当然,缺点是无法在实际环境中进行任何代码更改。这是一件好事。

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

其他提示

我们使用选项 3。同步。我编写了一个 bash 脚本来执行此操作并进行一些额外的检查,但以下是它的基本功能。

  1. 制作一个用于推送直播的标签。
  2. 在该标签上运行 svn export 。
  3. rsync 来生活。

到目前为止,它一直在发挥作用。我们不必担心用户冲突或有一个单独的用户在生产机器上运行 svn up。

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

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

[1] 我非常不相信这一点,可能更多的是人们太固执,不愿意学习,或者做“额外的工作”。当他们必须返回到以前的版本,或者两个人编辑了同一个文件时,不要介意源代码控制可以为他们节省多少时间。

rsync只会上传差异。我个人没有使用过,但是 马克·皮尔格林 很久以前写过关于它是如何甚至 出色地处理二进制差异.

svn+rsync 听起来是一个很棒的解决方案。将来我一定要尝试一下。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top