Manage configurations

File Keeper

© Lead Image © Konstantin Sleptsov,

© Lead Image © Konstantin Sleptsov,

Article from Issue 203/2017

Etckeeper keeps order in global configuration files and prevents problems with accidentally deleted files.

Linux and other Unix-style systems have the advantage of storing configurations in easily readable and editable text files. According to the Linux Foundation's Filesystem Hierarchy Standard (FHS) [1], personal and user-specific configuration files go in the home directory and global configurations land in /etc. In the Linux file tree, the /etc directory used to stand for "et cetera"; today it is also interpreted as "editable text configuration."

The many files stored in /etc and its subdirectories provide an abundant variety of configuration possibilities for interested users. You can tweak the behavior of init scripts, system components, and network services by editing files within the /etc directory. But with all this power comes danger. An inadvertent or ill-advised change to a configuration file could render your system unusable. Perhaps more commonly, multiple changes to /etc configuration files in the heat of a troubleshooting session can be difficult to track or reconstruct when it is time to document what you just did or where you started.

Etckeeper [2] is an innovative tool that lets you impose a version control system on the /etc directory using popular VCS utilities such as Git, mercurial, bazaar, or darcs. Etckeeper can track metadata, including metadata that Git doesn't usually track, such as file permissions, and Etckeeper will interact directly with several common package managers to manage /etc configuration changes during package installation and upgrades.

Etckeeper, which was created by well-known Debian developer Joey Hess [3], is useful for both desktop systems and servers, where it can manage change to Apache, MySQL, and other services.

Etckeeper is easy to use if you know some rudimentary Git commands.


Under Debian and its derivatives, you can set up Etckeeper using the command:

apt install etckeeper

The package manager is installed with Git as a dependency. Etckeeper is also found in the Fedora, Arch Linux, openSUSE, Gentoo, and NetBSD repositories.

The next step is to configure Etckeeper by editing nano/etc/etckeeper/etckeeper.conf with root privileges. For Debian and Ubuntu, Git is the default VCS. The settings for cooperation with Apt, Yum, DNF, or Zypper, as well as DPKG, RPM, and Pacman are already set correctly to reflect the installed system. By default, Etckeeper writes changes once a day or whenever Apt or a graphical package manager is used in the repository (Figure 1).

Figure 1: You only need to edit the Etckeeper configuration file for manual mode.

First Amendment

Etckeeper generates its infrastructure under /etc/.git/ during installation, where it saves change and versioning data (Figure 2). The system stores the file permissions below /etc/.etckeeper.

Figure 2: Etckeeper creates its infrastructure in the hidden /etc/.git directory.

To see how Etckeeper works, edit the /etc/debian_version file or a similar small file. In debian_version, 8.0 or 9.0 stands for the installed Debian version. I have inserted the # This is the current Version of Debian-Testing sentence as a comment (Figure 3).

Figure 3: The first change: a brief comment in /etc/debian_version.

Two Modes

You can use Etckeeper automatically or manually. Manual operation is perhaps less convenient, but it offers more control. In automatic mode, which is the default, Etckeeper backs up all changes in /etc once a day (at night). In addition, it creates a backup before and after each use of Apt (even if you use a graphical package manager) (Figure 4). No matter which method you choose, before you commit, you should run the commands in Listing 1.

Listing 1

Before You Commit


Figure 4: In automatic mode, Etckeeper updates changes to /etc with every Apt run.

If you would like more control and oversight, you can operate Etckeeper manually with a few easy Git commands. You must always be working as root in the /etc directory. To revert to automatic mode, open the etc/etckeeper/etckeeper.conf file in an editor and remove the comment hashtags in the lines from Listing 2; then type git init at the command line.

Listing 2

Reverting to Automatic Mode


You can also combine the manual and automatic methods, which means you have the power of manual control but the safety of knowing the system will automatically back up any potentially forgotten changes.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Kup

    KDE's Kup tool uses Rsync and techniques from the Git version control environment for sophisticated backup with an easy GUI interface.

  • Version Control with Git

    The Git version control system is a powerful tool for managing large and small software development projects. We'll show you how to get started.

  • Workspace: Subversion

    Even if you are not a programmer, you’ve probably heard of Subversion, a powerful tool for managing changes to software projects. Although Subversion is designed primarily for software developers, it can be useful to mere mortals as well.

  • Git 101

    When several people collaborate on source code or documents, things can get messy fast. Git provides a quick cure: The distributed versioning system reliably ensures the integrity and consistency of data with minimal effort.

  • Remote Git Repositories

    Software projects often comprise several code branches, some of which exist in parallel. Git supports community code development through remote repositories and code branching.

comments powered by Disqus

Direct Download

Read full article as PDF:

Price $2.95