/ etc /の変更を追跡する方法


30

/ etc /の変更を追跡したい

基本的にyum update、ユーザーによって、またはユーザーによってファイルが変更されたかどうかを知り、変更が気に入らない場合はロールバックします。git、LVM、btrfsスナップショットなどのVCS、またはバックアッププログラムを使用することを考えました。

あなたは何をお勧めします?


回答:


32

バージョン管理を使用してファイルを管理しているDebianのJoey Hessのetckeeperが欲しいようです/etc。git、mercurial、darcs、bazaarをサポートしています。

gitはetckeeperで最もよくサポートされているVCSであり、VCSユーザーは最もよく知っているでしょう。デフォルトのVCSがgitではないように、ディストリビューションがetckeeperを変更することを選択した可能性があります。他のVCSが好きな場合にのみ、git以外のVCSでetckeeperを使用する必要があります。


Etckeeperは、マシンにインストールした最も価値のある管理ツールの1つであり、新しいシステムをセットアップした後にインストールする最初のパッケージの1つです。
hlovdal

6

最終的な推奨事項をお伝えすることはできませんが、このテーマに関するいくつかの考えを共有できます。/ etcは通常かなり小さいことを考えると、単純な圧縮tar-ballソリューションを選択するだけです。履歴を確認する必要がほとんどない場合は、設定するのが最も簡単なソリューションかもしれません。

私にとっては、/ etcを追跡するためだけに論理ボリュームを管理するのは退屈で、特にLVMスナップショットは比較的少量のデータのバックアップ手段として定期的に作成されるように設計されているとは思わないためです。

btrfsはこれにはるかに適しているように思えますが、たとえばext {2,3,4}ほど安定しておらず、fsckツールもまだ完成していません。しかし、継続的に改善されています。

個人的に私は実際にgitを使用して/ etcを追跡していますが、gitは所有権や許可などのファイルのメタ情報を保存しないことに注意してください!また、.gitディレクトリに適切な権限があることも確認してください。ただし、これらの問題に役立つツールがいくつかあります。/ etcを追跡するために開発されたetc-keeperをご覧になるか、少なくともgitpermsmetastoreなどを使用してメタ情報を追跡することをお勧めします。


3

「不要な」変更を追跡するために、HIDSを使用します。この場合、samhain他はtripwireまたはaideです。これらのシステムはすべて、望ましくないことが発生したときに警告を発します。

yum update設定ファイルは、対応する回転数でそのようにフラグが立てられている場合、.rpmnewまたは.rpmoldを離れることなく、何も変更しないでください。

Myselv修正するファイルのセキュリティコピーをcp -p origfile origfileYYYY-MM-DD前日の日付で作成することをお勧めします。

他のすべてが失敗した場合-バックアップ担当者に電話して、最後の既知の「正常な」バックアップからの復元を依頼します。


1

でファイル/ディレクトリのスナップショットを作成できると思います/etc

最初にファイル/ etc /ディレクトリのリストを作成します。

# ls -lha /etc >> /snapshotofetc

そして、ファイルを /etc

# touch testfile

そして、/etc以前にやったようなスナップショットを撮り直した場合

# ls -lhs /etc /lastsnapshotofetc

次に、次のように2つのファイルの違いを比較できます。

# diff /snapshotofetc /lastsnapshotofetc


0

構成管理またはファイルシステムの変更の追跡/監視をお探しですか?

早い場合は、puppetまたはを見てくださいchefCFEngine商用目的で存在します。puppet最近人気の獣です。

後者の場合、ファイルシステムの変更を監視するのは困難ですが、ファイルinotifyシステム監査auditctlやSGIのようなプログラムのインスタンスがありますfamが、再び監視することで、高価な実装になる可能性があります(ファイルシステムのパフォーマンスが低下する可能性があります)。


etckeeperは、/ etc固有のものだけに静かに慣れることができます。
ニキルマレー

その不正確さで申し訳ありません。質問を改善しました。
タッファー

0

rsnapshot必要なディレクトリの1時間ごとのスナップショットを保持するチェックアウトを確認できます。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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.