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