18.5. Управление системными конфигурационными файлами в RCS

Проблема
Требуется сохранять все версии системных конфигурационных файлов, чтобы
легко вернуться к более ранней конфигурации.
Решение
Возникает соблазн скопировать все содержимое /etc в репозитарий RCS, но это
не нужно и расточительно. Заархивируйте /etc обычным способом, а затем ис пользуйте RCS для сохранения только изменяемых файлов. Начните с занесения
в репозитарий всех файлов, которые вы собираетесь редактировать. Извлекайте
их, чтобы вносить изменения, а затем возвращайте обратно после завершения
правки. После занесения в репозитарий скопируйте рабочий файл на его поло женное место в /etc. После этого у вас появится полная история изменений всех
конфигурационных файлов, подвергавшихся правке.
Комментарий
В следующем примере создается репозитарий RCS для двух программ Amavisdnew
и Clam Anti-Virus. Каждая программа имеет собственный подкаталог в репо зитарий. Все команды должны выполняться с правами root.
# mkdir /rcs_configs
# cd /rcs_configs
# mkdir -p amavis/RCS
# mkdir -c clamav/RCS
# cd /amavns
# cp /etc/amavis/amavisd.conf amavisd.conf
18.5. Управление системными конфигурационными файлами в RCS 295
# ci -I amavisd.conf
RCS/amavisd.conf.v < - - amavisd.conf
enter d e s c r i p t i o n , terminated with single ' . ' o r end o f f i l e :
NOTE: This i s NOT t h e l og message!
» original amavis config. used with clamav and postfix
»
initial revision: 1.1
done
# со -1 amavisd.conf
# vim amavisd.conf
Внесите изменения, сохраните и закройте файл, а затем снова занесите его
в репозитарий:
# ci -u amavisd.conf
Скопируйте свой рабочий файл в /etc:
# ср amavisd.conf /etc/amavisd/amavisd.conf
Исходная копия и первая измененная версия надежно сохранены, и все готово
к сохранению других версий.
Вместо того чтобы создавать подкаталоги для каждой программы, все данные
можно хранить в одном каталоге. Вы сами выбираете способ организации файлов.
При использовании RCS легко запутаться и заблокировать файлы при занесе нии в репозитарий (вместо извлечения) или извлечь файл и забыть занести его
обратно. Если вы допустите подобную ошибку, то при следующей попытке извле чения файла будет получено следующее сообщение:
# со -1 amavisd.conf
RCS/amavisd.conf,v

•-> amavisd.conf
со: RCS/amavisd.conf.v: multiple revisions locked by carla; please specify one
При указании конкретной версии вы все равно получите предупреждение:
# со -1 -rl.4 amavisd.conf
RCS/amavisd.conf.v

•-> amavisd.conf
revision 1.4 (locked)
writable amavisd.conf exists; remove it? [ny](n): у
со: RCS/amavisd.conf.v: warning: You now have 2 locks,
done
Самый простой выход заключается в том, чтобы открыть файл RCS (в данном
примере RCS/amavisd.conf,v) и отредактировать его напрямую. Для этого сначала
нужно разрешить запись в файл:
# chmod 644 amavisd.conf,v
Затем отредактируйте заголовок. Найдите следующий фрагмент:
head 1.4;
access:
symbols:
locks
c a r l a : l . l
carla:1.2; strict;
comment @$ @;
Удалите блокировки из секции locks. Фрагмент должен выглядеть так:
head 1.4;
access;
symbols;
locks;strict;
comment @$ @;
Сохраните и закройте файл. Не забудьте вернуть его в режим «только для чтения»:
# chmod 444 amavisd.conf,v
См. также
rcsintro(l), ci(l), co(l); домашняя страница RCS (http://www.cs.purdue.edu/homes/
trinkLe/RCS).