RCS - Ведение истории изменений в UNIX

Аватар пользователя Raven2000

Иногда очень важно знать, что изменилось в конкретном файле на критическом важном сервере с последующим восстановлением конфигурационного файла. А так же, кто, когда и что там менял. Для этого есть встроенная утилита Revision Control System (RCS). Пользоваться ей очень легко только нужно привыкнуть к работе с ней.

Директория

Создайте в той директории, где находится файл директорию "./RCS" там будут лежать контрольные версии файлов данной директории. Пример:

# mkdir /etc/RCS 

Ну вот и все готово =) теперь воспользуемся ей. Для примера возьмем /etc/rc.conf.

Регистрация файла

Для начала ведения истории необходима команда "ci -l".

ci - сокращение от "check in" регистрация - помещает содержимого файла в архивный файл, хранящий его предыдущие версии (а точнее, изменения между его версиями) называемый также RCS-файлом.

Пример:

# ci -l /etc/rc.conf
/etc/RCS/rc.conf,v  <--  /etc/rc.conf
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> .
initial revision: 1.1
done
# ll /etc/RCS/
total 4
-r--r--r--  1 root  wheel   2,1K 25 окт 13:25 rc.conf,v

Теперь история изменений файла будет хранится в созданной директории /etc/RCS в одноименном файле с пометкой ",v".

Редактирование файла

Для редактирования файла запишите его контрольное значение с помощью команды "co -l".

co - сокращение от "check out" представляют собой получение копии некоторой версии из RCS-архива.

Пример:

# co -l /etc/rc.conf
/etc/RCS/rc.conf,v  -->  /etc/rc.conf
revision 1.1 (locked)
writable /etc/rc.conf exists; remove it? [ny](n): n
co: checkout aborted

Затем измените этот файл своим редактором.

Когда изменения будут внесены подтвердите изменения командой "ci -u":
Пример:

# ci -u /etc/rc.conf
/etc/RCS/rc.conf,v  <--  /etc/rc.conf
new revision: 1.2; previous revision: 1.1
enter log message, terminated with single '.' or end of file:
>> .
done

Контроль работы с файлом

Так же полезно запускать "rcsdiff" перед запуском "co" таким образом вы уведите, кто внес изменение в файл и забыл воспользоваться RCS.

# rcsdiff /etc/rc.conf
===================================================================
RCS file: /etc/RCS/rc.conf,v
retrieving revision 1.2
diff -r1.2 /etc/rc.conf

Тут все в порядке.

Ели вы увидели, что, кто то внес изменения в этот файл как в примере ниже:

# rcsdiff /etc/rc.conf
===================================================================
RCS file: /etc/RCS/rc.conf,v
retrieving revision 1.2
diff -r1.2 /etc/rc.conf
83d82
< #TEST

То можете подтвердить это изменение командой "rcs -l", а затем выполнить обычную команду подтверждения изменений "ci -u" :
# rcs -l /etc/rc.conf
RCS file: /etc/RCS/rc.conf,v
done
# ci -u /etc/rc.conf
/etc/RCS/rc.conf,v  <--  /etc/rc.conf
new revision: 1.3; previous revision: 1.2
enter log message, terminated with single '.' or end of file:
>> .
done

Восстановления файла

Восстановление до последней текущий ревизии.

# co rc.conf
RCS/rc.conf,v  -->  rc.conf
revision 1.2

До конкретной версии файла
# co -r1.1 rc.conf
RCS/rc.conf,v  -->  rc.conf
revision 1.1
done

Освоение этих нескольких команд позволит вам сохранить свои нервы и сэкономить время в дальнейшем.

В RCS есть много полезных команд "rlog" для отображении истории изменения файла, а так же как выглядят предыдущие версии "co -p -rX.X" и тп.

Дополнительные материалы
Ваша оценка: Нет Средняя: 4.6 (16 голосов)

..всё это конечно, хорошо, но

..всё это конечно, хорошо, но лучше использовать что-то более современное и функциональное -- git, hg, svn. не в base system, но намного удобнее.

RE:..всё это конечно, хорошо, но

Согласен, но я в основном стараюсь использовать встроенные утилиты чтобы не "засорять" систему. И в конечном счете требовалось только контролировать пару десятков конфигов, что для отдельной установки спец ПО уже будет слишком. =)

Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

Было бы ещё полезным ещё

Было бы ещё полезным ещё осветить работу с ветвями: ветвление, слияние. Использование идентификаторов опять же - тоже полезное свойство.

Последние статьи

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer