有没有一个标准的方法来保持修改的Linuxconfiguration文件分离和可识别?

注意这是来自Stack Overflow的已closures问题的副本,以及服务器故障中类似问题的build设性版本。

通常我需要在/etc下编辑许多configuration文件,但是,我不希望这些更改在我执行下一次系统升级时丢失。

现在,我已经将所有的configuration文件以及一些维护脚本放在/opt/admin ,并将符号链接到了/etc目标,但根据我见过的标准 ,这似乎不正确。 我想到的另一个select是把它们放在/usr/local 。 上述文件说明在本地安装软件时供系统pipe理员使用。 这是我得到的最接近的 但是,安装新的非打包软件时, /usr/local也会被破坏。

对于如何维护这些标准,有没有一个标准/很大程度上遵循的最佳做法? 由于这不是一个讨论页面,答案应该是明确的,并有一两个文章来支持。

注意我已经包括我自己的答案,我发现迄今为止最有用的。 我在这里重新打开这个,所以可以讨论,并有更多的答案进来。

尽pipe它不会将它们分开,但etckeeper在跟踪对configuration文件的更改方面做得非常好。 将存储库保存在某个地方可以很容易地将这些更改恢复到新机器上。

您可以使用configurationpipe理工具来执行此操作。 当您添加具有相同angular色的服务器时,可以很好地扩展。

这听起来像是你已经制定了一个适合你的需求,但你可能想看看厨师,木偶,Ansible,Opsware,或其他configurationpipe理/自动化/编排工具,取决于您的需求和预算。

从我提到的问题的答案看,似乎有两个通用的解决scheme – 使用符号链接或维护一个文件列表(请参阅ptman和Jim的链接问题的答案)。 我找不到最佳做法文章。

我build议一个混合的解决scheme:你只保存一个简单的文件(我称之为FILES )与configuration文件的列表。 脚本将FILES和符号链接实际configuration文件复制到选定目录下的重复文件系统层次结构(我称之为脚本link-config-files.sh和目录system-config )。

这样,你只能将文件保存在一个易于编辑的文件中,而不涉及shell的魔法。 由于符号链接,您可以从system-config中访问您关心的configuration文件。 设置了一个cron作业来备份system-config ,所有configuration文件都自动备份。 而另一个cron作业会定期运行link-config-files.sh这样所有的文件都会出现在system-config中(或者从system-config消失),而备份则是编辑FILES

我觉得这是迄今为止最好的解决scheme。 当然,我有偏见。 无论如何, 这里是我的脚本 ,它也链接了一个备份脚本。