Kyle Burton Asked: 2009-05-28 08:31:36 +0800 CST2009-05-28 08:31:36 +0800 CST 2009-05-28 08:31:36 +0800 CST 关于在 VCS 中存储 /etc 的建议? 772 用于跟踪 /etc 的最简单的 VCS 是什么?在版本控制中存储 etc 目录有哪些挑战,最佳实践?我应该使用集中式还是分布式 VCS? vcs 7 个回答 Voted Gene Gotimer 2009-05-28T10:35:07+08:002009-05-28T10:35:07+08:00 您可以使用etckeeper来处理它,这将允许您使用 git、mercurial、darcs 或 bzr 作为存储库。 jldugger 2009-05-28T21:03:45+08:002009-05-28T21:03:45+08:00 使用etckeeper为您完成。这有很多原因: 您有时会忘记使用 VCS;etckeeper 挂钩到包管理器,为您提供安装前和安装后状态以回滚 你会搞砸文件权限 您将搞砸处理影子密码文件 jedberg 2009-05-28T08:48:17+08:002009-05-28T08:48:17+08:00 我发现 git 最擅长这项工作(尽管 Mercurial 可能也可以工作)。/etc 中的一个简单的“git init”,你就在路上。之后,只需添加您关心的文件,然后在它们发生更改时,您可以将其签入。您甚至可以设置 cron 以在每次发生更改时自动进行签入(尽管那时您不会收到日志文件)。如果您想设置与第一台具有所有相同配置的第二台机器,或者只是作为备份,您也可以推送 repo。 当我开始系统管理时,rcs 是 /etc 的首选方法。然后是 CVS,然后是 SVN。我怀疑当有新事物出现时,我会转向那个。:) 但是随着 VCS 中的每一个新范例,我的生活实际上变得更轻松了。 John 2009-05-28T08:53:44+08:002009-05-28T08:53:44+08:00 我同意 jedberg 的观点,但是反过来。使用 git 存储库但创建一个 .gitignore 忽略所有文件,然后为您关心的文件添加一个 unignore。至少这样你的 git 状态不会一直很脏。 即:.gitignore * !hosts !resolv.conf ETC... 约翰 Anders Hansson 2009-05-28T08:55:40+08:002009-05-28T08:55:40+08:00 没有任何宗教意图:我强烈推荐使用分布式 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 是另外两个参赛者(正如其他答案中所指出的那样),但他们缺乏在没有设置的情况下推送到远程服务器的能力(至少目前如此)。 jtimberman 2009-06-14T00:47:46+08:002009-06-14T00:47:46+08:00 我不会在版本控制系统中管理所有 /etc。原因是,/etc 的大部分内容可能不会随着时间的推移而发生太大变化。包管理工具将为您管理 /etc 中的大量文件,升级包可能会导致与 VCS 发生有趣的冲突。 相反,我会使用一个配置 管理系统来管理我的服务器的各种组件和包,使用模板和静态文件(如果适用)来配置将文件存储在 /etc(和其他地方)中的服务和设置。我会将所有内容存储在版本控制系统中,我个人更喜欢 Git,因为作为系统管理员,“典型”Git 工作流程对我来说比 Subversion(或 CVS)更有意义。Git 的去中心化对我来说是系统管理的巨大胜利。 lkraav 2010-11-15T05:46:38+08:002010-11-15T05:46:38+08:00 作为之前所有建议的补充(这些建议几乎完全描述了我所做的),我刚刚为自己发现了tig。使用 cmdline 使用 git 管理等让我发疯,变化很快堆积起来,而我却没有表现出任何照顾它们的愿望。只是随机四处寻找 git GUI,我注意到存在这个基于 ncurses 的名为 tig 的 GUI。 现在我真的很期待管理我的 /etc!
您可以使用etckeeper来处理它,这将允许您使用 git、mercurial、darcs 或 bzr 作为存储库。
使用etckeeper为您完成。这有很多原因:
我发现 git 最擅长这项工作(尽管 Mercurial 可能也可以工作)。/etc 中的一个简单的“git init”,你就在路上。之后,只需添加您关心的文件,然后在它们发生更改时,您可以将其签入。您甚至可以设置 cron 以在每次发生更改时自动进行签入(尽管那时您不会收到日志文件)。如果您想设置与第一台具有所有相同配置的第二台机器,或者只是作为备份,您也可以推送 repo。
当我开始系统管理时,rcs 是 /etc 的首选方法。然后是 CVS,然后是 SVN。我怀疑当有新事物出现时,我会转向那个。:) 但是随着 VCS 中的每一个新范例,我的生活实际上变得更轻松了。
我同意 jedberg 的观点,但是反过来。使用 git 存储库但创建一个 .gitignore 忽略所有文件,然后为您关心的文件添加一个 unignore。至少这样你的 git 状态不会一直很脏。
即:.gitignore * !hosts !resolv.conf
ETC...
约翰
没有任何宗教意图:我强烈推荐使用分布式 VCS,最好是 Bazaar。这是因为:
apt-get install bzr
.Git 和 Mercurial 是另外两个参赛者(正如其他答案中所指出的那样),但他们缺乏在没有设置的情况下推送到远程服务器的能力(至少目前如此)。
我不会在版本控制系统中管理所有 /etc。原因是,/etc 的大部分内容可能不会随着时间的推移而发生太大变化。包管理工具将为您管理 /etc 中的大量文件,升级包可能会导致与 VCS 发生有趣的冲突。
相反,我会使用一个配置 管理系统来管理我的服务器的各种组件和包,使用模板和静态文件(如果适用)来配置将文件存储在 /etc(和其他地方)中的服务和设置。我会将所有内容存储在版本控制系统中,我个人更喜欢 Git,因为作为系统管理员,“典型”Git 工作流程对我来说比 Subversion(或 CVS)更有意义。Git 的去中心化对我来说是系统管理的巨大胜利。
作为之前所有建议的补充(这些建议几乎完全描述了我所做的),我刚刚为自己发现了tig。使用 cmdline 使用 git 管理等让我发疯,变化很快堆积起来,而我却没有表现出任何照顾它们的愿望。只是随机四处寻找 git GUI,我注意到存在这个基于 ncurses 的名为 tig 的 GUI。
现在我真的很期待管理我的 /etc!