Назад | Перейти на главную страницу

Управлять файлами конфигурации с помощью жестких ссылок и подрывной деятельности?

Я рассматриваю возможность жестко привязать файлы конфигурации к рабочей копии моего репозитория конфигурации SVN. Есть ли причина, почему бы не управлять конфигурационными файлами таким образом?

Предположим, / home / user / confmgr / confs - это рабочая копия моего репозитория конфигурации. Затем я мог жестко связать файлы конфигурации следующим образом:

ln /etc/php.ini /home/user/confmgr/confs/php.ini
ln /etc/httpd/conf/httpd.conf /home/user/confmgr/confs/httpd.conf

Затем, когда мне нужно отредактировать файл конфигурации, это просто

cd /home/user/confmgr/confs
vi httpd.conf
/sbin/service httpd configtest
/sbin/service httpd graceful
svn commit -m 'adding virtual host to httpd.conf for new project'

Несколько наблюдений в почти обратном порядке:

  1. Почему бы вместо этого не использовать символическую ссылку?
  2. Попробуйте изменить свой рабочий процесс. Безопасно внесите изменения во вторую рабочую копию, просмотрите и зафиксируйте, затем svn up рабочая копия в живом использовании.
  3. Существуют более сложные инструменты для управления сложными конфигурационными структурами из системы контроля версий. Рассмотрите возможность использования Кукольный, BCFG2, etckeeper и так далее.

Я бы не положил их в / домой

Поместите файлы конфигурации в корневую файловую систему.

Это связано с тем, что / монтируется раньше других файловых систем, и есть вероятность, что ему могут понадобиться файлы конфигурации, расположенные в еще не смонтированной файловой системе.

Я бы также использовал символические ссылки, а не жесткие ссылки. Жесткие ссылки между файловыми системами не допускаются (iirc), и вы можете получить неработающие ссылки при извлечении обновленных файлов из SVN (изменение inodes).

Вам нужно быть очень осторожным, но я не вижу причины, по которой вы не можете работать с этой конфигурацией.

и т. д. хранитель вероятно, хороший эталонный дизайн для вас:

etckeeper - это набор инструментов, позволяющих хранить / etc в репозиториях git, mercurial, darcs или bzr.

Он хранит репо в /etc/.$RCS, но не поддерживает SVN. Я не знаю почему; автор просто заявляет, что пробовал, и это отстой. По сути, этот подход делает / etc рабочая копия.