Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Versie beheer voor je config bestanden  (gelezen 301 keer)

Offline MKe

  • Lid
  • Steunpunt: Nee
Versie beheer voor je config bestanden
« Gepost op: 2015/04/18, 14:48:13 »
Je kent het wel, je bewerkt een config bestand en vervolgens werkt er van alles niet meer. Gelukkig heb je het advies van de experts gevolgd en een kopie gemaakt voordat je de file ging bewerken. Maar eigelijk wilde je de versie hebben voordat e deze kopie maakte, maar die heb je net overschreven toen je deze gemaakt had. De volgende keer maak je gewoon steeds nieuwe kopieeen en laat je de oue staan. En nu staat de hele /etc folder vol met .bak# bestanden en welke moest je ook alweer hebben? Als dit bekend voorkomt ben je een kandidaat voor versie beheer. Ik ga het niet hebben over git of svn, die zijn veel te uitgebreid en ingewikkeld voor een beginned versie beheerder en zijn ook een grote overkill (kun je hier wel mee werken is git natuurlijk wel een geweldige tool). Gelukkig biedt Ubuntu een tool, een hele oude en simpele versie beheer tool uit 1982 die uitermate geschikt is voor dit doel. Deze tool is rcs (revision control system).
Wat rcs doet is simpel, het houd een soort logbestand bij van de veranderingen die jij maakt en kan daardoor altijd de versie reconstrueren die jij wilt. Verder geeft het de mogelijkheid om de versie te documenteren, zodat jijkan zoeken welke versie je ook al weer terug wilde, zelfs als je het maken van de versie alweer vergeten bent.
Installeren:
sudo apt-get install rcs
Laten we een voorbeeld nemen: Je wilt de fstab (voor mounten van schijven) bewerken.
Als eerste maak je de map /etc/RCS aan. Dit is niet noodzakelijk, maar als je dit niet doet slaat rcs de logfiles direct in de /etc op en dat staat zo slordig.
$ cd /etc
$ sudo mkdir /etc/RCS
Voordat je met de fstab gaat werken maak je eerst een log bestand aan, je 'meld het bestand aan' bij rcs. Dit gaat met het commando ci (check in)
$ sudo ci -l fstab # de -l heeft te maken met locking voor multi-user gebruik, laat ik hier buiten beschouwing
>>
Rcs geeft nu een >> prompt. Dit is een simpele editor waar je een beschrijving voor later kunt zetten (documenteren). Zorg ervoor dat je hier later wat mee kunt om te begrijpen wat je doet. Je kunt meerdere regels intypen en als je klaar bent zet je een enkele '.' om de editor af te sluiten.
Rcs geeft je een versie nummer: 1.1. Als je in de RCS folder kijkt zul je zien dat het logbestand is aangemaakt vor de fstab (fstab,v).
Vervolgens kun je de fstab gaan bewerken met je favoriete editor. Telkens als je anders een veiligheidskopie zou maken geef je nu steeds het bovenstaande commando (ci -l fstab) en geeft een goede beschrijving van de versie.

Wil je nu zien welke versies je hebt kun je dat doen met rlog:
$ rlog fstab

RCS file: RCS/fstab,v
Working file: fstab
head: 1.4
branch:
locks: strict
mke: 1.4
access list:
symbolic names:
keyword substitution: kv
total revisions: 4; selected revisions: 4
description:
Standaard fstab, gegenereerd door het systeem
----------------------------
revision 1.4 locked by: mke;
date: 2015/04/18 12:31:25;  author: mke;  state: Exp;  lines: +1 -0
mountpoint van home omgezet van samba naar nfs mount
----------------------------
revision 1.3
date: 2015/04/18 12:30:50;  author: mke;  state: Exp;  lines: +1 -0
home directory van de NAS gemount op /mnt/HOME
----------------------------
revision 1.2
date: 2015/04/18 12:30:09;  author: mke;  state: Exp;  lines: +1 -0
mountpoint pulic share van de NAS gemount
----------------------------
revision 1.1
date: 2015/04/18 12:29:26;  author: mke;  state: Exp;
Initial revision
=============================================================================

Wil je fstab nu terug zetten naar de versie waarbij je nog samba gebruikte i.p.v. nfs (hier versie 1.3) dan kun je dat doem met het commando co
sudo co -r1.3 fstab
RCS/fstab,v  -->  fstab
revision 1.3
done

Wil je de verschillen zien tussen de huidige versie 1.3 en de nieuwere versie 1.4 dan kun je dat doen met rcfdiff:
$ rcsdiff -r1.4 fstab # ik laat mijn output hier niet zien, ik hou mijn fstab voor mijzelf...
Dat is alles, simpel he?
Nog een ding, rcs heeft een ouderwetse manier om samenwerking met andere users toe te staan en dat heet locking. Soms geeft die problemen als je meerdere dingen hebt gelocked. Als je enige gebruiker bent dan kun je dit negeren, maar als het je irriteerd kun je alles weer un-locken met et commando $ rcs -u fstab
Zo, nu hoef je nooit meer een .bak bestand te maken. Overigens kun je meerdere files in een directory in RCS zetten, geen probleem. Elk krijgt zijn eigen versie nummers en logfile (i.t.t. svn en git).