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

时间:2020-03-05 18:43:07  来源:igfitidea点击:

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

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

理想的是无麻烦的源代码控制。我实施了SVN一段时间,这非常适合作为备份和版本控制(轻松还原临时或者重大更改)等备份的半解决方案。

不幸的是,SVN会将.SVN隐藏目录放置在所有会引起问题的位置,特别是在其他开发人员进行文件夹结构更改或者复制/移动网站目录时。我听到过这样的论点,那就是教育等问题,但是SVN采取的方法对我们来说根本不是一个实际的解决方案。

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

其他可能性包括:

  • SVK,这只是命令行问题。此外,我不确定这是否合适。
  • Mercurial,可能带有一些隐藏隐藏分布式组件的触发器,这种情况在这种情况下不是必需的,并且对于其他开发人员来说不必要地复杂。我对Mercurial进行了简短的实验,但找不到一种使存储库分离并与实时文件夹工作副本保持不断同步的好方法。也许作为一种源控制解决方案(使存储库和活动文件夹位于同一位置)与另一种备份解决方案相结合,这可能是可行的方法。 Mercurial的一个缺点是它不会将空文件夹置于源代码控制之下,这对于那些经常使用空文件夹作为文件上载位置的占位符位置的网站来说是个问题。
  • Rsync,我还没有真正调查过。

我非常感谢我们提出的有关维护实时网站备份的最佳方法的建议,理想情况下,该方法是通过一种快速检索过去版本的简便方法。

回答:

  • 我猜xcopy / 7-zip的方法听起来很合理,但是很快就会占用很多空间,对吗?
  • 至于源代码控制,我想我要源代码控制说:"现在这是文件夹的状态,我会处理,如果无法匹配,那是你的错,我只会开始新的历史",而不是努力失败。

我仍然很好奇,看看是否还有其他传统选择

解决方案

回答

我们仍然可以使用SVN,但是不必在实际环境中进行检出,而是进行导出,这样就不会创建.svn目录。当然,不利的一面是实时环境中不会发生任何代码更改。这是一件好事。

通常,绝对不允许在生产系统上进行代码更改。应当在开发/测试/ UAT环境中进行更改并进行测试,然后确认确定之后,就可以在SVN中使用RELEASE-x-x-x之类的代码标记该代码。然后,在实时系统上,导出带有该标签的代码。

回答

如果人们移动,删除或者添加文件而没有告知源控制系统,那么我们选择的任何源控制解决方案都将出现问题。我不知道任何可以解决此问题的源代码管理项目。

如果我们根本无法教育从事该项目的人员[1],那么我们可能只需要获取每日快照。使用xcopy到网络驱动器的批处理文件之类的简单操作,可能在命令行上使用7-zip压缩以将其压缩,以使其不占用太多空间,这可能是最简单的解决方案。

[1]我将高度怀疑这一点,可能更多的情况是人们过于固执,不愿学习或者从事"额外工作"。没关系,当源代码控制必须返回到以前的版本,或者两个人编辑了同一文件时,它们可以节省多少时间。

回答

我们使用选项3. Rsync。我编写了一个bash脚本来执行此操作并进行一些额外的检查,但是这是其功能的基础。

  • 制作一个标签以推动生存。
  • 在该标签上运行svn export。
  • rsync住。

到目前为止,它一直在解决。我们不必担心用户冲突,也不必为在生产计算机上运行svn而拥有单独的用户。

回答

rsync将仅上传差异。我还没有亲自使用过它,但是Mark Pilgrim很久以前就写过关于它甚至如何出色地处理二进制差异的文章。

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