网站搜索

如何在 Linux 上使用 Etckeeper 通过版本控制来管理 /etc


在 Unix/Linux 目录结构中,/etc 目录是特定于主机的系统范围配置文件和目录所在的位置;它是所有系统范围配置文件的中心位置。配置文件是用于控制程序如何工作的本地文件 - 它必须是静态的并且不能是可执行的二进制文件。

为了跟踪系统配置文件的更改,系统管理员通常在修改配置文件之前对其进行复制(或备份)。这样,如果他们直接修改原始文件并犯了错误,他们可以恢复到保存的副本。

Etckeeper 是一个简单、易于使用、模块化且可配置的工具集合,可使用版本控制来管理 /etc。它使您能够将更改存储在版本控制系统 (VCS) 中的 /etc 目录中,例如 git(这是首选的 VCS)、mercurial、bazaar 或 darcs 存储库。因此,如果出现错误,您可以使用 git 查看或恢复对 /etc 所做的更改。

它的其他特点是:

  1. 它支持与前端包管理器(包括 APT、YUM、DNF、Zypper 和 pacman-g2)集成,以在包升级期间自动提交对 /etc 所做的更改。
  2. 它跟踪 git 通常不支持的文件元数据(例如文件权限),但这对于 /etc 很重要,并且
  3. 它包括一个 cron 作业和一个 systemd 计时器,每个计时器都可以每天自动向 /etc 提交一次现有更改。

如何在 Linux 中安装 Etckeeper

Etckeeper 可在 DebianUbuntuFedora 和其他 Linux 发行版中使用。要安装它,请使用默认的包管理器,如图所示。请注意,此命令还将安装 git 和一些其他包作为依赖项。

sudo apt-get install etckeeper	#Ubuntu and Debian
apt-get install etckeeper		#Debian as root user
dnf install etckeeper			#Fedora 22+
sudo zypper install etckeeper	        #OpenSUSE 15

Enterprise Linux 发行版上,例如 RedHat Enterprise Linux (RHEL)、CentOS 等,您需要添加如图所示,在安装之前EPEL 存储库

yum install epel-release
yum install etckeeper

在 Linux 中配置 Etckeeper

一旦你安装了如上所示的etckeeper,你需要配置它的运行方式,它的主要配置文件是/etc/etckeeper/etckeeper.conf。要打开它进行编辑,请使用您最喜欢的任何基于文本的编辑器,如图所示。

vim /etc/etckeeper/etckeeper.conf
OR
sudo nano /etc/etckeeper/etckeeper.conf

该文件包含多个配置选项(每个选项都有一个小而清晰的使用说明),允许您设置要使用的版本控制系统(VCS),将选项传递给VSC;启用或禁用计时器、启用或禁用特殊文件警告、启用或禁用 etckeeper 在安装前将现有更改提交到 /etc

此外,您还可以设置前端或更高级别的包管理器(例如 apt、yum、dnf 等)和底层或低级别的包管理器(dpkg、rpm 等)与 etckeeper 配合使用强>。

如果您对文件进行了任何更改,请保存并关闭文件。

初始化 Git 存储库并执行初始提交

现在您已经配置了 etckeeper,您需要初始化 Git 存储库以开始跟踪 /etc 目录中的任何更改,如下所示。您只能使用root权限运行etckeeper,否则使用sudo

cd 
sudo etckeeper init

接下来,为了使 etckeeper 能够自动工作,您需要运行第一次提交来开始跟踪 /etc 中的更改,如下所示。

sudo etckeeper commit "first commit"

做出改变并做出承诺

运行第一次提交后,etckeeper 通过 git 现在正在跟踪 /etc 目录中的任何更改。现在尝试对任何配置文件进行更改。

然后运行以下命令来显示自上次提交以来已更改的文件;此命令本质上显示 /etc 中未暂存提交的更改,其中 VCS 表示 git,“status”是 git 子命令。

sudo etckeeper vcs status

然后按如下方式提交最近的更改。

sudo etckeeper commit "changed hosts and phpmyadmin config files"

查看提交日志

要查看所有提交的日志(每个提交的 id 和注释),您可以运行以下命令。

sudo etckeeper vcs log

您还可以显示提交的详细信息,只需指定提交 ID(前几个字符即可),如下所示:

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

此外,您还可以查看两次提交之间的差异,如图所示。如果您想要撤销更改(如下一节所示),这尤其有用。您可以使用箭头键上下或左右滚动,并按 q 退出。

sudo etckeeper vcs show 704cc56 a153b6847

如何撤销更改

etckeeper 的本质是帮助您跟踪对 /etc 目录的更改,并在必要时撤消更改。假设您意识到上次编辑 /etc/nginx/nginx.conf 时犯了一些错误,并且由于配置结构错误而导致 Nginx 服务无法重新启动,您可以恢复到特定提交(例如 704cc56)中保存的副本,您认为配置正确,如下所示。

sudo etckeeper vcs checkout 704cc56 /etc/nginx/nginx.conf

或者,您可以取消所有更改并恢复到存储在特定提交中的 /etc (及其子目录)下的所有文件的版本。

sudo etckeeper vcs checkout 704cc56 

如何自动提交更改

Etckeeper 还附带了 Systemd 的服务和定时器单元,包含在软件包中。要在 /etc 目录中启动更改的“自动提交”,只需暂时启动 etckeeper.timer 单元并检查它是否已启动并运行, 如下。

sudo systemctl start etckeeper.timer
sudo systemctl status etckeeper.timer

并使其在系统启动时自动启动,如图所示。

sudo systemctl enable etckeeper.timer

有关更多信息,请参阅 Etckeeper 项目页面:https://etckeeper.branchable.com/。

结论

在本指南中,我们展示了如何安装和使用 etckeeper 将更改存储在版本控制系统 (VCS) 的 /etc 目录中例如 git 并在必要时查看或恢复对 /etc 所做的更改。通过下面的反馈表分享您的想法或询问有关 etckeeper 的问题。