Etckeeper - ArchWiki

# Etckeeper

Related articles

- Git
- Cron

Etckeeper lets you keep `/etc` under version control.

## Installation

Install the etckeeper package.

## Configuration

The preferred version control system (default is git) and other options are to be configured in `/etc/etckeeper/etckeeper.conf`.

Etckeeper supports using pacman as a `LOWLEVEL_PACKAGE_MANAGER` and `HIGHLEVEL_PACKAGE_MANAGER` in `etckeeper.conf`.

## Usage

After configuration the repository for the `/etc` path has to be initialized:

    # etckeeper init

As of etckeeper version 1.18.3-1, pre-install and post-install pacman hooks are executed automatically on package installation, update and removal. A manual #Wrapper script is not required anymore.

To track other changes to the `/etc` path, you need to either commit changes manually (see the etckeeper(8) man page for commands) or use one of the stopgap solutions below.

### systemd

Service and timer units are included in the package. Simply enable `etckeeper.timer`.

See Systemd/Timers for more information and Systemd#Editing provided units if you wish to edit the provided units.

### Cron

There is a `cron script` in the source distribution. You can use this script to automatically commit changes on a schedule.

For example, to make it run daily:

1. Have cron installed and enabled.
2. Put script as `/etc/cron.daily/script_name`.
3. Permit execution of file for root (`# chmod u+x /etc/cron.daily/script_name`).

See cron#cronie, cron for more information.

### Incron

This article or section needs expansion.

Reason: Please expand this section with instructions on how to set up incron or link to a write-up. (Discuss in Talk:Etckeeper#)

To automatically create commits on every file modification inside `/etc/`, use incron. It utilizes native filesystem signalling through inotify(7).

See: [1], [2]

### Automatic push to remote repo

Warning: Pushing your etckeeper repository to a publicly accessible remote repository can expose sensitive data such as password hashes or private keys. Proceed with caution.

Whilst having a local backup in `/etc/.git` is a good first step, etckeeper can automatically push your changes on each commit to a remote repository such as Github.

First, edit `etc/.git` and add your remote Github repository:

    # git remote add origin https://github.com/user/repo.git

Next, a hook must be used or configured to push.

#### Using etckeeper provided hook

Edit the `PUSH_REMOTE` option in `/etc/etckeeper/etckeeper.conf`, with the name of the remote repository you want etckeeper to push to. For example:

    PUSH_REMOTE="origin"

Multiple remote repositories can be added separated with spaces.

#### Through a custom hook

Create an executable file `/etc/etckeeper/commit.d/40github-push`:

    #!/bin/sh
    set -e

    if [ "$VCS" = git ] && [ -d .git ]; then
      cd /etc/
      git push origin master
    fi

Now each time you run your wrapper script or alias from above, changes will be automatically commited to your Github repo.

### Wrapper script

If you want to track changes of a frequently executed command (e.g. `command`), a simple wrapper script can help to automate it. For example, create:

    /usr/local/bin/checketc.sh

    #!/bin/bash

    etckeeper pre-install
    command
    etckeeper post-install

and make it executable. Alternatively, you may call the Etckeeper commands via a bash alias or function, see Bash#Aliases for more information.

Note: Before Etckeeper version 1.18.3-1 such manual wrapper script was required for Pacman integration. Now the Pacman hooks perform the commands automatically.
Category:

- System administration

Hidden category:

- Pages or sections flagged with Template:Expansion