linux /etc/目录
Linux,UNIX和类似操作系统的许多优点之一是, 所有内容都是文件 ,并且大多数配置都是通过文本文件完成的,从而使您可以使用任何选择的工具轻松地对其进行读写。 要监视您的配置,您有许多工具可以自动执行配置,从而可以对系统的配置方式进行详细控制。 您可以轻松比较配置文件的不同版本以查看任何更改。 跟踪特定的配置和随着时间的变化,您可以:
- 进入唤醒页面时查看最近发生的变化
- 当程序包管理遍及您的配置的精巧雪花时,还原更改
- 当无意的rm进入生产环境而不是您认为正在使用的测试服务器时,还原文件
- 查看多人(和工具)在一个系统上工作时发生了什么变化
- 调查脚本小子进入后的更改
数十年来,我们一直在使用版本控制系统(VCS)跟踪文本文件中的更改。 我们拥有工具,并且一直在使用它们。 源代码的版本控制为您提供了诸如跟踪文件历史记录,比较版本,还原为旧版本以及分支等功能。
您的/ etc /目录是大多数Linux发行版存储系统配置文件的位置,而跟踪/ etc /则具有版本控制系统所跟踪的其他挑战。 Etckeeper可以帮助我们满足这些额外要求。 Etckeeper更喜欢git ,但还可以与其他几种版本控制系统一起使用:mercurial,bazaar或darcs。
其他工具(例如配置管理和发行版的程序包管理)也可以控制配置,但它们不会在版本控制中跟踪所有文件。
Puppet,Chef和Ansible等配置管理系统(CMS)不会跟踪/ etc /中的每个文件。 对于许多文件,它们仅验证某些内容在适当位置,而忽略文件的其余部分。 例如,Puppet将验证用户在/ etc / passwd中是否存在,但将忽略对其不管理的帐户的更改。
软件包文件具有基本配置文件,也可能具有用于自动配置的脚本,但是它们不跟踪修改。 确实,他们可能会在软件包升级过程中践踏本地配置。 他们不应该,但是有时候他们应该。
如果未将repo目录(例如/etc/.git )配置为忽略某些文件,则Etckeeper将跟踪除repo目录以外的所有内容。 默认配置不会忽略某些不需要跟踪的文件,例如/ etc / mtab等临时文件和/etc/ld.so.cache 等缓存文件。 Etckeeper使用版本控制系统的本机忽略文件,并且在版本控制存储库中跟踪该文件。 例如,/ etc/.gitignore预先填充了etckeeper将忽略的文件,但是git跟踪了/etc/.gitignore 。
某些服务对于配置文件的所有权和权限甚至是空目录都有些不知所措,而传统上版本控制系统无法很好地跟踪所有这些内容。 Etckeeper通过跟踪/etc/.etckeeper中的重要元数据来增强基础版本控制系统。 再次在版本控制系统中跟踪此文件。
Etckeeper还具有与程序包管理系统配合使用的挂钩,并在程序包安装和升级后签入更改。
etckeeper入门
安装完成后,使用init初始化存储库,然后检查当前状态。
$
sudo etckeeper init
$
sudo etckeeper commit
-m
"Initial checkin"
初始化后,/ etc /是版本控制系统中的存储库。 本机版本控制工具可用于管理文件。
$
sudo
touch
/ etc
/ testfile
$
sudo
git
-C
/ etc add testfile
$
sudo
git
-C
/ etc commit
-m
"A test file"
$ echo
"10.10.10.1111 nextcloud"
| sudo tee
- a
/ etc
/ hosts
>>
/ dev
/
null
$ sudo git
- C
/etc/ diff
- U0 hosts
$ diff
-- git a
/ hosts b
/ hosts
index 97f1792..
ecc187a
100644
--- a
/ hosts
+++ b
/ hosts
@@
-
9
,
0
+
10
@@ ff02
::
2 ip6
- allrouters
+ 10.10.10.1111 nextcloud
$ sudo git
- C
/etc/ commit hosts
- m
"Added nextcloud box"
$ sudo git
- C
/etc/ revert HEAD
- m
"oops, wrong IP"
$ echo
"10.10.10.111 nextcloud"
| sudo tee
- a
/ etc
/ hosts
>>
/ dev
/
null
$ sudo git
- C
/etc/ commit hosts
- m
"Correctly added nextcloud box"
Etckeeper还提供了版本控制系统包装器。 使用包装器的一个优点是sudo etckeeper commit会使用sudo而不是root登录该帐户。
$
sudo etckeeper commit
$
sudo etckeeper vcs status
$
sudo etckeeper vcs
-C apache2 status
是否想查看升级进行了哪些配置更改? 查看您的版本控制系统日志。
commit 327f09703be712aab263b9565fede5c21f378732
Author: der.hans <etckeeper@example.com>
Date: Wed Feb 15 07:24:24 2017 -0700
committing changes in /etc after apt run
Package changes:
+vim-addon-manager 0.5.3
+software-properties-kde 0.92.25debian1
+vim-fugitive 2.1-2
Etckeeper是捕获随时间变化的系统配置的出色工具。 它通过包装器来补充本机版本控制系统功能,以跟踪重要的元数据(例如权限和所有权),并与程序包管理系统一起使用。 请参阅etckeeper文档以获取更多用法示例,例如如何将/ etc /存储库从一个系统克隆到另一个系统。
翻译自: https://opensource.com/article/17/3/etckeeper-version-control
linux /etc/目录