Konfigurationsverwaltung mit RCS, dateibasierte Versionierungen
Kennt man nicht die schnellen Änderungen in der einen oder anderen Konfigurationsdatei? Und die immer mehr werdenden Sicherungskopien?
- configfile.bak
- configfile.201111031811
- configfile.201111031815
- configfile.mgsimon
- configfile…
Wieso nicht mit einer einfachen Versionsverwaltung? Old school RCS ist auf so gut wie jedem Linux, Unix oder Mac OS X vorhanden …
Revision Control System (RCS) ist eine Versionierung für einzelne Dateien. Dabei werden die Versionen mit einer zusätzlichen “,v-Datei” verwaltet. Ohne ein Repository können beliebige Dateien schnell und einfach versioniert werden. Ideal zur Verwaltung verschiedener Konfigurationsstände, ohne gleich jedes Mal eine manuelle Sicherungskopie erstellen zu müssen.
Sicherung
ohne RCS
$ cp logging.properties logging.properties.201111031811 |
mit RCS
$ rcs -i -U logging.properties RCS file: logging.properties,v enter description, terminated with single '.' or end of file: NOTE: This is NOT the log message! >> existing version >> . done $ ci -u logging.properties logging.properties,v <-- logging.properties initial revision: 1.1 done |
Neue Konfiguration
Gewünschte Anpassungen in der der aktuellen Datei vornehmen, speichern und sichern.
ohne RCS
$ cp logging.properties logging.properties.201111031815 |
mit RCS
$ ci -u logging.properties logging.properties,v <-- logging.properties new revision: 1.2; previous revision: 1.1 enter log message, terminated with single '.' or end of file: >> log more startup messages >> . done |
Versionshistorie
ohne RCS
nicht wirklich möglich |
mit RCS
$ rlog logging.properties RCS file: logging.properties,v Working file: logging.properties head: 1.2 branch: locks: access list: symbolic names: keyword substitution: kv total revisions: 2; selected revisions: 2 description: existing version ---------------------------- revision 1.2 date: 2011/11/03 18:46:57; author: mgsimon; state: Exp; lines: +2 -2 log more startup messages ---------------------------- revision 1.1 date: 2011/11/03 18:44:54; author: mgsimon; state: Exp; Initial revision ============================================================================= |
Veränderungen
ohne RCS
$ diff logging.properties logging.properties.201111031811 61,62c61,62 < org.apache.catalina.startup.ContextConfig.level = FINE < org.apache.catalina.startup.HostConfig.level = FINE --- > #org.apache.catalina.startup.ContextConfig.level = FINE > #org.apache.catalina.startup.HostConfig.level = FINE |
mit RCS
$ rcsdiff logging.properties =================================================================== RCS file: logging.properties,v retrieving revision 1.2 diff -r1.2 logging.properties mgBook:conf mgsimon$ rcsdiff -r1.1 logging.properties =================================================================== RCS file: logging.properties,v retrieving revision 1.1 diff -r1.1 logging.properties 61,62c61,62 < #org.apache.catalina.startup.ContextConfig.level = FINE < #org.apache.catalina.startup.HostConfig.level = FINE --- > org.apache.catalina.startup.ContextConfig.level = FINE > org.apache.catalina.startup.HostConfig.level = FINE |
Alte Konfiguration
ohne RCS
$ cp logging.properties.201111031811 logging.properties |
mit RCS
$ co -r1.1 logging.properties logging.properties,v --> logging.properties revision 1.1 writable logging.properties exists; remove it? [ny](n): y done |
Konfigurationsänderungen
ohne RCS
nicht wirklich möglich |
mit RCS
$ find conf/ -name *,v conf//catalina.properties,v conf//context.xml,v conf//logging.properties,v conf//server.xml,v conf//tomcat-users.xml,v conf//web.xml,v |
Zusammenfassung
rcs -i -U datei => ci -u datei => vi datei => ci -u datei => ... |
Keep IT simple … ;)
Weiter …
Tags: Cygwin, Linux, MacOSX, RCS, Unix, Windows
04. November 2011 um 06:48
Sehr schön, das werde ich sicher testen … außerdem habe ich den Beitrag zu Diaspora getragen … https://joindiaspora.com/posts/738181
04. November 2011 um 08:23
WTF, RCS? War das nicht dieser Vorläufer von CVS?
Also wenn schon Versionsverwaltung würde ich das ganze Verzeichnis oder den ganzen Config-Tree unter Git oder Mercurial-Verwaltung stellen.
04. November 2011 um 08:37
@Prometheus; ab und zu sollte man über den Tellerrand schauen …
Richtig RCS ist der Vorläufer von CVS.
Ich verwende auch Git, SVN & Co., aber ohne Installation auf Host XY ein paar Konfigurationsdateien direkt zu versionieren ist mit RCS einfacher und gleich am richtigen Ort.