如何跟踪/ etc /中的更改


30

我想跟踪/ etc /中的更改

基本上,我想知道用户是否更改了文件,yum update如果我不喜欢更改则将其回滚。我想到了为此使用git,LVM或btrfs快照之类的VCS或备份程序。

你会推荐什么?


Answers:


32

听起来您好像想要Debian的Joey Hess的etckeeper,后者/etc使用版本控制来管理文件。它支持git,mercurial,darcs和bazaar。

git是etckeeper最佳支持的VCS,并且VCS用户最有可能知道。您的发行版可能已选择修改etckeeper,因此其默认VCS不是git。如果您爱上另一个VCS,则只能将etckeeper与git以外的VCS一起使用。


Etckeeper很容易成为我在计算机上安装的最有价值的管理工具之一,并且是设置新系统后安装的第一批软件包之一。
hlovdal16年

6

我不能给您最后的建议,但是我可以分享一些关于该主题的想法。鉴于/ etc通常很小,您可能只需要一个简单的压缩tar-ball解决方案。如果您几乎不需要浏览历史记录,那么它可能是设置起来最简单的解决方案。

对我来说,管理逻辑卷只是为了跟踪/ etc会很乏味,尤其是因为我不认为LVM快照旨在定期创建以作为备份相对少量数据的手段。

在我看来,btrfs似乎要好得多,但是它仍然不如ext {2,3,4}稳定,并且fsck工具也尚未完成。但它不断变得更好。

我个人实际上是使用git来跟踪/ etc,但是您应该记住git不会存储所有权或权限之类的文件元信息!还要检查.git目录是否具有正确的权限。尽管有一些工具可以解决这些问题。您可能想看看etc-keeper,它是专门为跟踪/ etc而开发的,或者至少使用诸如gitpermsmetastore之类的东西来跟踪元信息。


3

为了跟踪“不需要的”更改,我们使用了HIDS-在我们的情况下,samhain其他为tripwireaide。当发生不想要的事情时,所有这些系统都会警告您。

yum update如果配置文件在相应的rpm中被标记为,则A 不应在不留下.rpmnew或.rpmold的情况下进行任何更改。

Myselv,我发现cp -p origfile origfileYYYY-MM-DD用前一天的日期制作要修改的文件的安全副本是一个好习惯。

如果其他所有操作均失败-我打电话给备份人员,并要求从上次已知的“良好”备份中恢复。


1

我认为您可以在中制作文件/目录的快照/etc

首先列出文件/ etc /目录:

# ls -lha /etc >> /snapshotofetc

如果您在 /etc

# touch testfile

如果您/etc像我们之前所做的那样拍摄快照

# ls -lhs /etc /lastsnapshotofetc

然后您可以像这样比较两个文件之间的差异:

# diff /snapshotofetc /lastsnapshotofetc

1

总是有radmind。如果您不喜欢它,可以立即将其回滚。


0

您是在寻找配置管理还是跟踪/监视文件系统更改?

如果是早些时候,我会看puppetchefCFEngine存在用于商业目的。puppet是最近流行的野兽。

如果是较新的版本,则很难监视文件系统的更改,但是有一些程序实例,例如 inotify文件系统审核auditctl或SGI之fam但同样,它是监视对象,并且实现起来可能会很昂贵(文件系统性能可能会下降)。


etckeeper只能擅长处理/ etc特定的东西。
Nikhil Mulley 2012年

抱歉,这样的不准确。我改善了这个问题。
taffer 2012年

0

您可以检查出rsnapshot哪个保留您想要的任何目录的每小时快照...您可以将其设置为24小时运行,然后设置为X每日一次,然后X每周一次,等等。当文件未更改时,它足以进行硬链接(在rsync后台使用)。


0

您可以考虑使用git。您可以高效地跟踪更改,并且非常易于使用。

git status # Show changed files
git diff # Show file differences (paged automatically)
git commit -a # Commit all changes. 

我相信初始设置是这样的。我已经有一段时间没有这样做了。

cd /etc
git init
git add *
git commit -a -m "Created repository"

这种方法最适用于单个服务器,但可以与其他更改存储库的工具一起使用。这在您的金丝雀网站上很有用,以确保发生预期的更改。

您也许可以使用克隆来处理多个服务器共有的文件。


0

我有一个脚本每天运行,并备份自上次备份以来已更改的文件:

#!bin/bash
ext=$(date +"%Y%m%d")_ChangeS
mkdir -p "$1/$ext" && \
  ionice -c3 rsync -ah --numeric-ids --inplace --backup \
                   --backup-dir="$1/$ext" \
                   --include="/etc" / "$1" && \
  rmdir --ignore-fail-on-non-empty "$1/$ext"

您输入将在其中创建备份的路径,并且该目录将具有与此类似的列表(经过几次运行):

20120106_ChangeS  etc
$ls 20120106_ChangeS/etc/
cron.d

您可以对其进行一些修改以更频繁地记录更改,或者在发生更改时使用inotify触发脚本的修改版本/etc

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.