/ Etc / içindeki değişiklikleri nasıl takip edersiniz


30

/ Etc / içindeki değişiklikleri takip etmek istiyorum

Temel olarak bir dosyanın yum updatebir kullanıcı tarafından mı yoksa bir kullanıcı tarafından mı değiştirildiğini bilmek istiyorum ve bu süreyi beğenmiyorsam geri alırım. Bunun için git, LVM veya btrfs anlık görüntüleri veya bir yedekleme programı gibi bir VCS kullanmayı düşündüm.

Ne önerirsiniz?


Yanıtlar:


32

Versiyon kontrolünü kullanarak dosyaları yöneten Joey Hess of Debian'dan bir alıcı istiyor gibisin/etc . Git, mercurial, darcs ve çarşı destekler.

git, etckeeper tarafından en iyi desteklenen VCS'dir ve VCS kullanıcılarının bilmesi en muhtemeldir. Dağıtımınızın etckeeper'ı değiştirmeyi seçmesi olasıdır, böylece varsayılan VCS gitmez. Diğer VCS'ye aşıksanız, etckeeper'ı git dışında bir VCS ile birlikte kullanmalısınız.


Etckeeper, makinelerime kurduğum en değerli yönetici araçlarından biri ve yeni bir sistem kurduktan sonra kurduğum ilk paketlerden biri.
hlovdal

6

Size son bir öneride bulunamıyorum, ancak konuyla ilgili birkaç düşünceyi paylaşabilirim. Bu / etc genellikle oldukça küçük olduğu için, basit bir sıkıştırılmış tar-ball çözümü için gidebilirsiniz. Tarihin üzerinden geçmeniz gerekmiyorsa, kurması en kolay çözüm olabilir.

Benim için mantıksal hacimleri sadece / etc'in izini sürmek için yönetmek ve özellikle LVM anlık görüntülerinin nispeten küçük miktarda veri yedekleme aracı olarak düzenli olarak oluşturulacak şekilde tasarlandığını sanmıyorum.

btrfs bana bunun için daha iyi bir donanıma sahip görünüyor, ancak hala ext {2,3,4} gibi sabit değil ve fsck aracı da henüz yapılmadı. Ama sürekli daha iyi olur.

Şahsen aslında / etc izlemek için git'i kullanıyorum ama git'in sahiplik veya izin gibi dosya meforformasyonunu saklamadığını unutmayın! Ayrıca, .git dizininin doğru izne sahip olup olmadığını kontrol edin. Bu sorunlara rağmen yardımcı olacak birkaç araç var. Sen bir göz atmak isteyebilirsiniz vb koruyucusu gibi az kullanım şeye tutma / etc parça veya kullanım için tam geliştirildi, gitperms veya metastore metainformation izlemek için.


3

"İstenmeyen" değişiklikleri takip etmek için HIDS kullanıyoruz - bizim durumumuzda samhaindiğerleri tripwireya da aide. İstenmeyen bir şey olduğunda tüm bu sistemler sizi uyaracaktır.

Bir yum updateyapılandırma dosyası karşılık gelen rpm bu şekilde işaretlenir ise, bir .rpmnew veya .rpmold çıkmadan şey değiştirmemelidir.

Myselv Değişiklik yapacağım dosyanın güvenlik kopyasını cp -p origfile origfileYYYY-MM-DDönceki gün tarihi ile yapmak iyi bir pratikti .

Her şey başarısız olursa - yedekleri ararım ve bilinen son "iyi" yedekten bir geri yükleme isterim.


1

İçindeki dosyaların / dizinlerin anlık görüntüsünü alabileceğinizi düşünüyorum /etc.

İlk önce / etc / directory dosyalarının bir listesini yapın:

# ls -lha /etc >> /snapshotofetc

Ve eğer bir dosya yaparsanız /etc

# touch testfile

ve /etcdaha önce yaptığımızın bir görüntüsünü alırsanız

# ls -lhs /etc /lastsnapshotofetc

ve sonra bu 2 dosya arasındaki farkları karşılaştırabilirsiniz:

# diff /snapshotofetc /lastsnapshotofetc


0

Yapılandırma yönetimi mi arıyorsunuz yoksa dosya sistemi değişikliklerini mi izliyor / izliyorsunuz?

Daha erken olsaydı, puppetya da bakardım chef. CFEngineticari amaçlar için var. puppetbugünlerde popüler bir canavar.

Sonuncusu ise, dosya sistemi değişikliklerini izlemeniz zor ancak inotifydosya sistemi denetimi auditctlveya SGI gibi programların bir örneği var famancak yine de bir izleme olayı ve pahalı bir uygulama olabilir (dosya sistemi performansı düşebilir).


etckeeper sadece / etc belirli şeyler için ustaca sessiz olabilir.
Nikhil Mulley

Bu kadar kesin olmadığı için özür dilerim. Soruyu geliştirdim.
Ocak'ta 14:12

0

İstediğiniz rsnapshotdizinin saatin anlık görüntüsünü tutana bakabilirsiniz ... 24 saat, sonra X günlükleri, sonra X weeklies vb. Ayarlayabilir. Disk alanı için istediğiniz kadar. Dosyalar değişmediğinde bağlantı kurmak yeterince akıllıdır ( rsyncsahne arkasında kullanılır.


0

Kullanmayı düşünebilirsiniz git. Yapabilirsiniz Değişiklikleri takip etmede etkilidir ve bunun gibi bir şey için kullanımı çok kolaydır.

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

İlk kurulumun böyle gittiğine inanıyorum. Bir süredir yapmadım.

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

Bu yaklaşım, tek bir sunucu için en iyi sonucu verir, ancak depoyu değiştiren diğer araçlarla katmanlı olabilir. Beklenen değişikliklerin gerçekleşmesini sağlamak için kanarya sitelerinizde yararlı olabilir.

Birden çok sunucuda ortak olan dosyayı işlemek için klonlamayı kullanabilirsiniz.


0

Her gün çalışan ve önceki yedeklemeden bu yana değişen dosyaları yedekleyen bir komut dosyasına sahibim:

#!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"

Yedeklemelerin oluşturulacağı yola girersiniz ve bu dizinde buna benzer bir liste bulunur (birkaç çalıştırmadan sonra):

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

Değişiklikleri daha sık kaydetmek için onu biraz değiştirebilir veya değişiklikler gerçekleştiğinde betiğin değiştirilmiş bir sürümünü tetiklemek için inotify komutunu kullanabilirsiniz /etc.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.