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

本文将向您展示如何安装和使用etckeeper来存储版本控制系统(VCS)(如git)中/ etc目录中的更改。

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

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

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

它的其他功能是:

  1. 它支持与前端软件包管理器集成,包括APTYUMDNFZypperpacman-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

RedHat Enterprise LinuxRHEL ), CentOS企业Linux发行版上 ,您需要在安装之前添加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 etc。

此外,您可以设置前端或更高级别的包管理器(例如aptyumdnf等)和底层或低级包管理器( dpkgrpm等)以与etckeeper一起使用

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

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

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

$ cd 
$ sudo etckeeper init
在/ etc上初始化Git存储库

在/ etc上初始化Git存储库

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

$ sudo etckeeper commit "first commit"
运行Git Commit跟踪/ etc文件系统中的更改

运行Git Commit跟踪/ etc文件系统中的更改

做出改变和承诺

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

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

$ sudo etckeeper vcs status
查看/ etc文件系统的更改

查看/ etc文件系统的更改

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

$ sudo etckeeper commit "changed hosts and phpmyadmin config files"
提交新的更改

提交新的更改

查看提交日志

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

$ sudo etckeeper vcs log
查看Git提交历史记录

查看Git提交历史记录

您还可以显示提交的详细信息,只需指定提交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目录中启动“ Autocommit ”更改,只需启动etckeeper.timer单元,检查它是否已启动并运行,如下所示。

$ sudo systemctl start etckeeper.timer
$ sudo systemctl status etckeeper.timer
启动Etckeeper定时器单元

启动Etckeeper定时器单元

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

$ sudo systemctl enable etckeeper.timer

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

结论

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