在版本控制环境中管理生产资产/数据的最佳方法是什么?

时间:2012-09-13 21:55:29

标签: git version-control

我的Django网站设置相当简单。

  • 本地开发副本
  • 私人BitBucket git repo中的副本
  • 从git服务器上克隆
  • 将所有这些结合在一起的结构文件

对于每个站点,我有两件事我没有在git中维护:/media/(人们在实际站点中上传的内容,通常链接到数据库)和数据库(sqlite3文件)。我将其从git中排除,因为我从不希望我的测试工作在我的本地数据/媒体副本上传。如果我确实想要,我会手动上传。

我对git很新。我在直接的本地→生产交换中使用Bazaar,但现在我在中间有BitBucket,我真的想用它们进行异地备份。

我知道大多数人在听到有人这么说时会畏缩但是这意味着我可以让我的客户访问BB回购,所以如果我“被公共汽车撞到”(令人担忧的是,我的客户的话),他们有足够的访问权限启动并运行新服务器。由于我自己的偏执,他们根本无法访问生产服务器,我在其他客户之间共享。

我可以和你一起讨厌我,但我有三个问题:

  1. 假设我不打算听,在回购中一个方向存储备份的最佳方法是什么?我可以编写备份创建脚本(创建一个新的tar),但是我将它存储在git中?

  2. 我可以避免将它们下载到我当地的分支机构吗?它不是世界末日,但这些已经是备份。我不需要每个仓库都有一份副本。

  3. 如果我想轮换备份,例如7天,那么永久性地清理旧备份的最佳方法是什么?我认为,即使我从实时分支中删除它们,git也会自然地保留一份过时的备份。我需要一种防止这种情况的方法。

  4. 我愿意听取其他解决方案,但我最感兴趣的是知道git是否可以扭曲我的恶行竞标。它的用途非常广泛。

1 个答案:

答案 0 :(得分:0)

'1'和'2'是半可解的。你正在使用bitbucket,是吗?只需为备份创建一个新的repo。问题解决了,你只需要在你需要的地方克隆它。 '3'表明git可能不是你想要做的正确的技术。

根据定义,git需要达到提交历史记录中每个文件的每个先前状态。您可以使用filter-branch之类的命令解决它...但为什么? Git远远不能保留过去的状态。这是它的精神。在git存储库中每七天编写一次备份擦除比使用更适合您的问题的技术要麻烦得多。亚马逊的免费套餐中的S3桶怎么样?使用正确配置的IAM策略为您的客户端提供访问权限,并且可以按小部分年度价格获得整个解决方案。这是S3。它有11个正直的九个。除非你的网站绝对是巨大的,否则你可以用很少的钱来保留数月的备份。