НОТА Это копия закрытый вопрос из Stack Overflow, и конструктивная версия, как мне кажется, аналогичный вопрос в Server Fault.
Часто мне нужно отредактировать множество файлов конфигурации в /etc
однако я не хочу, чтобы эти изменения потерялись, когда я выполню следующее обновление системы.
Прямо сейчас я разместил все файлы конфигурации, а также некоторые из моих сценариев обслуживания в /opt/admin
, и символические ссылки /etc
цели там, но это не кажется правильным в соответствии со стандартами, которые я видел. Другой вариант, о котором я подумал, - разместить их в /usr/local
. В вышеупомянутом документе говорится, что он предназначен для использования системным администратором при локальной установке программного обеспечения. Это самое близкое, что у меня есть. Однако также /usr/local
затирается при установке нового неупакованного программного обеспечения.
Есть ли стандартная / в значительной степени соблюдаемая передовая практика по их поддержанию? Поскольку это не страница обсуждения, ответы должны быть определенными и содержать пару статей в их поддержку.
НОТА Я включил свой собственный ответ, который до сих пор считал наиболее полезным. Я снова открыл это здесь, чтобы его можно было обсудить и получить больше ответов.
Хотя это не разделяет их, etckeeper очень хорошо отслеживает изменения в файлах конфигурации. Хранение репозитория вне коробки позволит легко восстановить эти изменения на новом компьютере.
Для этого вы можете использовать инструмент управления конфигурацией. Это хорошо масштабируется при добавлении серверов с той же ролью.
Похоже, вы создали тот, который соответствует вашим потребностям, но вы вполне можете захотеть изучить Chef, Puppet, Ansible, Opsware или другие инструменты управления / автоматизации / оркестрации конфигурации, в зависимости от ваших потребностей и бюджета.
Судя по ответам на вопросы, которые я упомянул, похоже, есть два общих решения - либо использовать символические ссылки, либо поддерживать список файлов (см. Ответы ptman и Jim в связанных вопросах). Я не смог найти статью с передовым опытом.
Я предлагаю гибридное решение: вы поддерживаете только простой файл (я называю его FILES
) со списком файлов конфигурации. Сценарий читает FILES
и связывает реальные файлы конфигурации с повторяющейся иерархией файловой системы в выбранном каталоге (я называю сценарий link-config-files.sh
и каталог system-config
).
Таким образом, вы сохраняете файлы только в одном файле, который легко редактировать и не требует магии оболочки. Файлы конфигурации, которые вам нужны, доступны из system-config
благодаря символической ссылке. Для резервного копирования настроено задание cron system-config
, поэтому все файлы конфигурации копируются автоматически. И периодически запускается другое задание cron link-config-files.sh
так что все остается для того, чтобы файл появился (или исчез из) system-config
и быть в резервной копии - это редактировать FILES
.
Я считаю, что это пока лучшее решение. Конечно, я пристрастен. В любом слючае, вот мой сценарий и он также связывает сценарий резервного копирования.