关于在 VCS 中存储 /etc 的建议?

关于在 VCS 中存储 /etc 的建议?

最容易用来跟踪 /etc 的 VCS 是什么?将 etc 目录存储在版本控制中有哪些挑战,最佳实践是什么?我应该使用集中式还是分布式 VCS?

答案1

你可以使用etckeeper来处理它,这将允许您使用 git、mercurial、darcs 或 bzr 作为存储库。

答案2

使用etckeeper为您完成这项工作。这样做有很多原因:

  • 您可能会偶尔忘记使用 VCS;etckeeper 会挂接到包管理器中,为您提供安装前和安装后的状态以供回滚
  • 你会搞砸文件权限
  • 你将搞砸处理影子密码文件

答案3

我发现 git 最适合做这项工作(尽管 Mercurial 可能也同样好用)。在 /etc 中简单地执行“git init”,就可以了。之后,只需添加您关心的文件,然后只要它们发生变化,您就可以签入。您甚至可以设置 cron 以在每次发生更改时自动执行签入(尽管您不会获得日志文件)。如果您想设置第二台机器,使其具有与第一台机器相同的所有配置,或者只是作为备份,您也可以推送 repo。

当我开始系统管理时,rcs 是 /etc 的首选方法。然后是 CVS,然后是 SVN。我想当出现新东西时,我会切换到它。:) 但随着 VCS 中每个新范式的出现,我的生活实际上变得更轻松了。

答案4

没有任何宗教意图:我强烈建议使用分布式 VCS,最好是 Bazaar。这是因为:

  • Bazaar 很容易安装(在 Ubuntu 和 Debian 服务器上,只需apt-get install bzr
  • 设置和启动都非常简单:
cd /etc
bzr init .
bzr add .
bzr commit . -m "Initial configuration"
  • 无需设置服务器。Bazaar 无需运行任何远程 Bazaar 服务器即可连接并推送到远程存储库。可与任何 FTP 服务器或 WEBDAV 等完美配合。

Git 和 Mercurial 是另外两个参赛者(正如其他答案所指出的),但他们缺乏无需设置即可推送到远程服务器的能力(至少目前如此)。

相关内容