/ etc /の変更を追跡したい
基本的に、yum update
によって、またはユーザーによってファイルが変更されたかどうかを知り、変更が気に入らない場合はロールバックします。 git、LVM、btrfsスナップショットなどのVCS、またはこのためのバックアッププログラムを使用することを考えました。
あなたは何をお勧めします?
バージョン管理を使用して/etc
の下のファイルを管理するDebianのJoey Hessから etckeeper が欲しいようです。 git、Mercurial、darcs、Bazaarをサポートしています。
gitは、etckeeperが最もサポートしているVCSであり、VCSユーザーが知っている可能性が最も高いです。ディストリビューションがetckeeperを変更して、デフォルトのVCSがgitでないことを選択している可能性があります。 git以外のVCSでetckeeperを使用しているのは、他のVCSに恋している場合のみです。
私はあなたに最終的な推奨を与えることはできませんが、このテーマについていくつかの考えを共有することができます。/etcは通常かなり小さいので、単純な圧縮tar-ballソリューションを使用するだけかもしれません。履歴をたどる必要がほとんどない場合は、セットアップするのが最も簡単なソリューションかもしれません。
私にとって、/ etcを追跡するためだけに論理ボリュームを管理するのは面倒です。特に、LVMスナップショットが比較的少量のデータのバックアップ手段として定期的に作成されるように設計されているとは思わないので。
btrfsの方がはるかに優れているようですが、たとえばext {2,3,4}ほど安定していないため、fsckツールもまだ実行されていません。しかし、継続的に改善されます。
個人的に私は実際に/ etcを追跡するためにgitを使用していますが、gitは所有権や許可などのファイルのメタ情報を格納しないことに注意してください!また、.gitディレクトリに適切な権限があることも確認してください。ただし、これらの問題に役立つツールがいくつかあります。/etcを追跡するために正確に開発された etc-keeper を確認するか、少なくとも gitperms または metastore メタ情報を追跡します。
「不要な」変更を追跡するために、HIDSを使用します。この場合、samhain
他はtripwire
またはaide
です。これらのシステムはすべて、望ましくないことが起こったときに警告します。
yum update
は、対応するrpmでconfig-fileにフラグが付けられている場合、.rpmnewまたは.rpmoldを残さずに何も変更しないでください。
Myselv変更するファイルのセキュリティコピーをcp -p origfile origfileYYYY-MM-DD
で前日の日付で作成することをお勧めします。
他のすべてが失敗した場合-私はバックアップ担当者に電話し、最後の既知の「適切な」バックアップからの復元を要求します。
常に radmind があります。変更が気に入らない場合は、すぐに元に戻すことができます。
/etc
のファイル/ディレクトリのスナップショットを作成できると思います。
まず、ファイルのリストを/ etc /ディレクトリに作成します。
# ls -lha /etc >> /snapshotofetc
/etc
にファイルを作成すると
# touch testfile
以前に行ったような/etc
のスナップショットをもう一度撮った場合
# ls -lhs /etc /lastsnapshotofetc
次に、次のように2つのファイルの違いを比較できます。
# diff /snapshotofetc /lastsnapshotofetc
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"
このアプローチは単一のサーバーに最適ですが、リポジトリを変更する他のツールと階層化することもできます。これは、カナリアサイトで期待される変更が行われていることを確認するのに役立ちます。
複製を使用して、複数のサーバーに共通のファイルを処理できる場合があります。
毎日実行し、前回のバックアップ以降に変更されたファイルをバックアップするスクリプトがあります。
#!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
少し変更して変更をより頻繁に記録するか、/etc
で変更が発生したときにスクリプトの変更バージョンをトリガーするためにinotifyを使用できます。
構成管理またはファイルシステムの変更の追跡/監視をお探しですか?
早い場合は、puppet
またはchef
を調べます。 CFEngine
は商業目的で存在します。 puppet
は最近人気のある獣です。
後者の場合、ファイルシステムの変更を監視するのは困難ですが、inotify
やファイルシステム監査auditctl
やSGIのfam
などのプログラムのインスタンスがありますが、ここでも、物事を監視し、高価な実装になる可能性があります(ファイルシステムのパフォーマンスが低下する可能性があります)。
rsnapshot
をチェックアウトして、必要なディレクトリの1時間ごとのスナップショットを保持できます。24時間、次にX日ごと、次にX週ごとなどのように設定できます。ディスク領域に必要なだけ。ファイルが変更されていないときにハードリンクするのに十分スマートです(裏でrsync
を使用します)。