Als je bij Linux de configuratiebestanden en wijzigingen daarin tot in detail wilt bijhouden, dan is Etckeeper precies wat je zoekt. Het programma slaat de bestanden op in Git en zorgt dat je elke wijziging in de configuratiebestanden van Linux precies kunt achterhalen. Een kleine fout bij het bewerken van de systeemconfiguratie kun je daarmee snel verhelpen.
Nog snel even die twee opties instellen, wat kan er misgaan? Wie heeft dat niet al eens gedacht, en twee uur later zit je vertwijfeld in een verknoeid serversysteem te graven. Het is vaak lastig om foutief ingestelde diensten en kapotte configuratiebestanden weer op de rit te krijgen. En mogelijk zit de werkende versie van het configuratiebestand al niet meer in je back-ups.
Etckeeper helpt je hiermee: het programma maakt dagelijks automatisch of handmatig voor elke pakketinstallatie een kopie van de bestanden zoals die in /etc staan. Het grijpt op de achtergrond terug naar een versiecontrolesysteem. De ontwikkelaars raden hiervoor Git aan, hoewel je ook andere zoals Bazaar of Mercurial kunt gebruiken. Als je een beetje bekend bent met Git, dan kun je er snel mee uit de voeten. Voor nieuwkomers leggen we enkele basisprincipes uit in het kader hieronder.
Git in het kort
Als je het over versiebeheersystemen hebt, staat Git op de polepositie. Er zijn weliswaar nog enkele andere systemen, maar de software waar Linus Torvalds mee is begonnen is, ook dankzij het succes van GitHub, dé standaardtool geworden voor ontwikkelaars. Daarom kan het zeker geen kwaad om ten minste een paar dingen met Git te hebben gedaan. Dat is met name van belang als je met Etckeeper aan de slag wilt gaan, want zonder een basisbegrip van Git kun je de voordelen van Etckeeper niet benutten.
Een Git-repository is een verzameling van bestanden. Niet meer en niet minder. Er komt verder geen additionele database of daemon aan te pas. Git slaat alle beheergegevens altijd op in de subdirectory .git. Als je de directory .git verwijdert, is de map waar die in zat geen Git-repository meer.
Daarom kun je een map waar een repository in zit ook willekeurig zonder grote gevolgen verplaatsen of kopiëren. De bestanden kun je ook op elk gewenst moment en waar dan ook bewerken en later synchroniseren.
Om ervoor te zorgen dat meerdere ontwikkelaars vanuit verschillende locaties de bestanden in een repository kunnen bewerken, kun je ze ook op remote servers uploaden en daar wijzigingen naar toe uploaden (push) of downloaden (pull). Git zorgt er dan voor dat alle wijzigingen met elkaar worden gesynchroniseerd, waarbij eventuele conflicten voor zover mogelijk worden opgelost.