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 голосов)

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

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

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

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

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

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

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

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <tr> <td> <em> <b> <u> <i> <strong> <font> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike> <caption>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <c>, <cpp>, <mysql>, <perl>, <php>, <python>, <text>. The supported tag styles are: <foo>, [foo].
  • Glossary terms will be automatically marked with links to their descriptions. If there are certain phrases or sections of text that should be excluded from glossary marking and linking, use the special markup, [no-glossary] ... [/no-glossary]. Additionally, these HTML elements will not be scanned: a, abbr, acronym, code, pre.

Подробнее о форматировании

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
16 + 2 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.

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

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer