Etckeeper, / etc dışındaki yapılandırma dosyalarını izlemek için kullanılabilir mi?


11

Özellikle benim grub.conf( /boot/grub/grub.conf) ve bazı oracle dosyaları (yani /db/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora) izlemek istiyorum .

Bağlantıları kullanmayı denedim; ancak etckeeper / git yalnızca gerçek içeriği değil, bağlantının işaret ettiği yeri izler. Ve dosyalar başka bir birimde olduğu için sabit bağlantılar oluşturamıyorum.

Başka bir GIT deposu kurabileceğimi biliyorum ama hepsini etckeeper'da kullanmayı tercih ederim.

Güncelleme

Nealmcb cevabına göre şu senaryoyu buldum:

#!/bin/sh
set -e

# Based on nealmcb's idea/script from http://serverfault.com/questions/211425/

# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.

# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and track them
# proactively, rather than just opportunistically here.

MIRROR_ROOT=/etc/etckeeper.mirror.d
echo "etckeeper: mirroring outside files to $MIRROR_ROOT/:"

mirror_dir() {
   LOCAL_PATH=$1
   echo "  $LOCAL_PATH"
   mkdir -p $MIRROR_ROOT/$LOCAL_PATH
   rsync -a $LOCAL_PATH/ $MIRROR_ROOT/$LOCAL_PATH
}


mirror_dir "/boot/grub"
mirror_dir "/root"  

Bir yol eklemek veya kaldırmak mirror_diriçin alt taraftaki aramayı eklemeniz veya kaldırmanız yeterlidir .


Gerçek bir cevap değil, ancak yukarıdaki yorumlara (en azından benim için) izin verilmediğinden, bunu paylaşın: / / vb dosya sistemlerinin git kontrolü için etckeeper'ın meta veri motorunu nasıl yeniden kullanabilir / genişletebilir veya adı geçen yetenekle git'i yerel olarak genişletebilir miyim? . (Lütfen burada bir referans yayınladığım için beni işaretlemeyin / ding etmeyin, çünkü yorum yapamadım,
teşekkürler

Yanıtlar:


6

Yukarıdaki komut dosyasını da düz dosyalar içerecek şekilde düzenledim.

belki birisi bunu bir betik dışında (etckeeper yapılandırmasında?) yapılandırma ve bunu joey hess'e bir yama olarak göndermesi için bir olasılık eklemelidir?

#!/bin/sh
set -e

# Based on nealmcb's + ErebusBat's script from http://serverfault.com/questions/211425/

# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.

# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and track them
# proactively, rather than just opportunistically here.

MIRROR_ROOT=/etc/etckeeper.mirror.d
echo "etckeeper: mirroring outside files to $MIRROR_ROOT/:"

mirror_dir() {
   LOCAL_PATH=$1
   echo "  $LOCAL_PATH"
   mkdir -p $MIRROR_ROOT/$LOCAL_PATH
   rsync -a --del $LOCAL_PATH/ $MIRROR_ROOT/$LOCAL_PATH
}

mirror_file() {
   LOCAL_PATH=$1
   DIRPATH=`dirname $LOCAL_PATH | head -n 1`
   echo "  $LOCAL_PATH"
   mkdir -p $MIRROR_ROOT/$DIRPATH
   rsync -a --del $LOCAL_PATH $MIRROR_ROOT/$DIRPATH
}
mirror_file "/var/srv/foo_bar/blog/config.py"
mirror_file "/var/srv/foo_bar_another_host/trac/conf/trac.ini"
mirror_file "/tmp/wildcards/*.jpg"

3

etckeeper, onu diğer sistemlerle entegre etmenizi sağlar.

Ben de / boot güncelleme-grub tarafından yapılan değişiklikleri izlemek istedim, bu yüzden aşağıdaki kodu koymak /etc/etckeeper/commit.d/20mirror-outside-files

Bu şekilde etckeeper başka nedenlerle çağrıldığında (yazılım yüklediğimde, bazen gece vb.), En son grub yapılandırmasında revizyonları yakalar ve izler.

Bu tür şeyleri / etc / Mirror / path-to-outside-file altına koymak için bir icat icat ettim , /etc/Mirror/boot/grub/grub.cfgancak eğer böyle bir konvansiyon için emsali varsa, bunu duymak isterim.

#!/bin/sh
set -e

# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.

# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and track them
# proactively, rather than just opportunistically here.

echo etckeeper: mirroring outside files

mkdir -p /etc/Mirror/boot/grub
cp -p /boot/grub/grub.cfg /etc/Mirror/boot/grub

Güncelleme:

Bazı nedenlerden dolayı, apt-get kaldırma veya temizleme işlemi yaptığınızda, örneğin eski bir çekirdeği silmek için etckeeper'ın bunu çalıştırmadığını unutmayın. Tuhaf .... Ama sudo etckeeper commitbu durumda manuel olarak veya bir kılavuzdan sonra çalıştırabilirsiniz update-grub.


3

etckeeper artık -dhangi dizinde çalışması gerektiğini belirtme seçeneğine sahiptir .

Etckeeper'ı tetiklemek için kancalar genellikle yapı olarak kullanılırken etckeeper pre-install, ..., etckeeper pre-install -d /boot/grubbunun yerine kullanılan kancaları eklemeniz gerekir . Bu, yaklaşımınızda dosya çoğaltılmasını önleyecektir.

Systemd hedefinin, hizmetinin, ..., dosyalarının yapılandırma dosyaları olduğunu düşünürseniz (her şeyden önce, altındaki dosyalar aşağıdaki dosyalardan /lib/systemdfarklı değildir /etc/init.d), bu -dseçeneğin ne olduğunu takip etmenize yardımcı olacağını unutmayın /lib/systemd.


1

Özetten: etckeeper init -d /directory

Ama dikkat et! bir sonraki çalıştırışınızda veya gelecek hafta, unutursanız -d path, varsayılan konumu ile yeni bir bağımsız yerel repo oluşturabilir /etc.

Bu yüzden bu önemli ayrıntıyı etckeeper.conf dosyasındaki yapılandırmasına aktarmanızı tavsiye ederim. Bir hızlı, grep /etc \``which etckeeper\``ortaya koyuyor: ETCKEEPER_DIR=/etcve bu yüzden sadece bu değişkeni etckeeper.conf dosyasında kullanın.

sed -i '1 i\ETCKEEPER_DIR=/' /etc/etckeeper/etckeeper.conf

Diğer şeyleri "tutma" arzusundan, dosya öznitelikleri dahil, etckeeper init -d / benim için çalıştı, ancak daha sonra detayı unutmak sinir bozucu. Bu detayı kaydetmek en iyisi. Ayrıca, uninitVCS kullanarak geri almaz, sadece tüm yerel repoyu siler.


0

Etckeeper'ın bunu yapacağını sanmıyorum, ancak birkaç çözüm var:

  1. bağlantıları tersine çevirin: dosya sisteminde / etc / içindeki bir dosyaya bağlantı koyun

  2. bu dosyaların / etc (backup) ve / etc (restore) dosyalarına kopyalanmasını betikleyin. Ardından bu komut dosyalarını periyodik olarak veya uygun bir git kancada kullanın.


2
Ters bağlantı iyi bir fikir olsa da, bazı durumlarda işe yaramayacağı durumlar var. Özellikle sizin için ters bağlantıyı denemeyin, aksi grub.conftakdirde önyükleme yapamazsınız.
Zoredache

@Zoredache - Kesinlikle. Ancak ters bağlantı muhtemelen Oracle dosyalarım için işe yarayacaktır. Ve @ pjz'nin kopyalama yöntemi muhtemelen önyüklemedeki herhangi bir şey için işe yarar (grub + kernel conf). Bunu önümüzdeki hafta deneyeceğim.
ErebusBat
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.