
What is the best solution for maintaining backup and revision control on live websites?在实时网站上维护备份和版本控制的最佳解决方案是什么? 作为我工作的一部分,我与多个实时网站合作。我们需要一种有效的方法来随时维护活动文件夹的备份。此外,更新这些站点可能会很痛苦,尤其是如果由于某种原因在实时环境中发生更改而导致更改中断时。 理想的是无麻烦的源代码控制。我实施了SVN一段时间,这非常适合作为备份和版本控制(轻松还原临时或重大更改)等备份的半解决方案。 不幸的是,SVN会将.SVN隐藏目录放置在所有会引起问题的位置,特别是当其他开发人员进行文件夹结构更改或复制/移动网站目录时。我已经听到过这样的论点,那就是教育等问题,但是SVN采取的方法对我们来说根本不是实际的解决方案。 我认为也许增量备份解决方案可能更好。 其他可能性包括: Mercurial,也许带有一些触发器来隐藏分布式组件,这种情况在这种情况下不是必需的,而对于其他开发人员来说则不必要地使它复杂化。 我在Mercurial上进行了简短的实验,但是找不到一种使存储库分离并与实时文件夹工作副本保持不断同步的好方法。也许作为一种源代码控制解决方案(使存储库和活动文件夹位于同一位置)与另一个备份解决方案结合起来,这可能是可行的方法。 Mercurial的一个缺点是它不会将空文件夹置于源代码控制之下,这对于经常将空文件夹作为文件上载位置的占位符位置的网站来说是个问题。 我非常感谢您提出的有关维护实时网站备份的最佳方法的建议,理想情况下,它是一种快速检索过去版本的简便方法。 答案回复:
我仍然很好奇是否还有其他传统选择 您仍然可以使用SVN,但是无需在实际环境中进行检出,而是进行导出,这样就不会创建.svn目录。当然,不利的一面是您的实时环境中不会发生任何代码更改。这是一件好事。 作为一般规则,绝对不允许在生产系统上进行代码更改。应当在开发/测试/ UAT环境中进行更改并进行测试,然后确认确定之后,您可以使用诸如RELEASE-x-x-x之类的代码在SVN中标记该代码。然后,在实时系统上,导出带有该标签的代码。 我们使用选项3。Rsync。我编写了一个bash脚本来执行此操作并进行一些额外的检查,但这是其功能的基础。 到目前为止,它一直在努力。我们不必担心用户冲突,也不必为在生产计算机上运行svn而拥有单独的用户。 rsync将仅上传差异。我还没有亲自使用过它,但是Mark Pilgrim很久以前就写过关于它甚至如何出色地处理二进制差异的信息。 svn rsync听起来是一个很棒的解决方案。我将来必须尝试。 您选择的任何源代码管理解决方案都会在人们移动,删除或添加文件且不告知源代码控制系统时出现问题。我不知道任何可以解决此问题的源代码管理项目。 在您无法教育从事项目工作的人员的情况下[1],则可能只需要获取每日快照。使用xcopy到网络驱动器的批处理文件之类的简单操作,以及可能在命令行上使用7-zip压缩以将其压缩以使其不占用太多空间的方法,可能是最简单的解决方案。 [1]我非常不相信这一点,可能更多的情况是人们过于固执,不愿学习或从事"额外工作"。没关系,当源代码控制必须返回到以前的版本,或者两个人编辑了相同的文件时,它们可以节省多少时间。 |