क्या etckeeper का उपयोग config फाइल को / / के बाहर ट्रैक करने के लिए किया जा सकता है?


11

विशेष रूप से मैं अपने grub.conf( /boot/grub/grub.conf) और कुछ ओरेकल फाइलों (यानी /db/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora) को ट्रैक करना चाहूंगा ।

मैंने लिंक का उपयोग करने का प्रयास किया; हालांकि etckeeper / git केवल वही ट्रैक करता है जहां लिंक इंगित करता है, वास्तविक सामग्री नहीं। और मैं हार्ड लिंक नहीं बना सकता क्योंकि फाइलें दूसरे वॉल्यूम पर हैं।

मुझे पता है कि मैं एक और जीआईटी रिपॉजिटरी सेटअप कर सकता था, लेकिन मैं इसे एटकीपर के भीतर रखना चाहूंगा।

अपडेट करें

Nealmcb के उत्तर के आधार पर मैं निम्नलिखित स्क्रिप्ट के साथ आया:

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

एक पथ को जोड़ने या हटाने के लिए जिसे आप mirror_dirकॉल करते हैं या नीचे की तरफ कॉल हटाते हैं ।


एक वास्तविक उत्तर नहीं है, लेकिन चूंकि टिप्पणियों की अनुमति नहीं है (कम से कम मेरे लिए) ऊपर, इसे साझा करते हुए: गैर-/ आदि फाइल सिस्टम के नियंत्रण के लिए एटकीपर के मेटाडेटा इंजन का पुन : उपयोग / विस्तार कैसे करें, या उक्त क्षमता के साथ देशी रूप से विस्तार करें? । (कृपया नीचे एक संदर्भ पोस्ट करने के लिए मुझे टिक-टिक / डिंग मत करें क्योंकि मैं टिप्पणी करने में सक्षम नहीं था, thx।)
जॉनी यूटा

जवाबों:


6

मैंने उपरोक्त स्क्रिप्ट को संपादित किया जिसमें सादा फाइलें भी शामिल हैं।

हो सकता है कि किसी को इसे स्क्रिप्ट के बाहर कॉन्फ़िगर करने की संभावना को जोड़ना चाहिए (एटकीपर कॉन्फिगर में?) और इसे पॉज़ के रूप में जस्सी के पास भेजें?

#!/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 आपको अन्य सिस्टम के साथ इसे एकीकृत करने की अनुमति देता है।

मैं अपडेट-ग्रब / बूट में किए गए परिवर्तनों को ट्रैक करना चाहता था, इसलिए मैंने नीचे दिए गए कोड को डाल दिया /etc/etckeeper/commit.d/20mirror-outside-files

इस तरह से किसी भी समय एटकेटर को अन्य कारणों से बुलाया जाता है (जब मैं सॉफ़्टवेयर स्थापित करता हूं, कभी-कभी रात में, आदि), तो यह नवीनतम ग्रब कॉन्फ़िगरेशन में संशोधनों को हड़प और ट्रैक करेगा।

मैंने इस सामान को / etc / Mirror / path-to-out-file , जैसे के तहत रखने के लिए कन्वेंशन का आविष्कार किया , /etc/Mirror/boot/grub/grub.cfgलेकिन अगर किसी ने इस तरह के एक और सम्मेलन के लिए मिसाल दी है, तो मुझे इसके बारे में सुनना अच्छा लगेगा।

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

अपडेट करें:

ध्यान दें कि किसी कारण से जब आप किसी पुराने कर्नेल को हटाने के लिए एटपिट-गेट रिमूव या पर्ज करते हैं, तो एटकीपर इसे नहीं चलाता है। अजीब .... लेकिन आप sudo etckeeper commitमैन्युअल रूप से उस मामले में, या एक मैनुअल के बाद चला सकते हैं update-grub


3

etckeeper के पास अब यह -dबताने का विकल्प है कि उसे किस डायरेक्टरी में काम करना चाहिए।

जबकि etckeeper को ट्रिगर करने के लिए हुक आमतौर पर निर्माण का उपयोग करते हैं etckeeper pre-install, ..., आपको etckeeper pre-install -d /boot/grubइसके बजाय उपयोग करने वाले हुक को जोड़ना होगा । यह आपके दृष्टिकोण में फ़ाइल दोहराव से बचना चाहिए।

ध्यान दें कि यदि आप उस सिस्टम टारगेट, सर्विस, ... पर विचार करते हैं, तो फाइलें कॉन्फिगरेशन फाइल्स हैं (I do - आखिर, फाइल्स अंडर /lib/systemdफाइल्स अंडर फाइल्स से अलग नहीं होती हैं /etc/init.d) तो यह -dऑप्शन आपकी मदद करेगा कि क्या होता है /lib/systemd


1

सिनॉप्सिस से: etckeeper init -d /directory

मगर सावधान! अगली बार जब आप इसे चलाते हैं, या अगले हफ्ते, यदि आप भूल जाते हैं -d path, तो यह डिफ़ॉल्ट स्थान के साथ एक नया स्टैंडअलोन स्थानीय रेपो बना सकता है /etc

इसलिए मैं etckeeper.conf में, इस महत्वपूर्ण विवरण को कॉन्फ़िगर करने की सलाह दूंगा। एक त्वरित, grep /etc \``which etckeeper\``प्रकट,: ETCKEEPER_DIR=/etcऔर इसलिए बस इस चर का उपयोग etckeeper.conf में करें।

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

अन्य सामानों को "रखने" की इच्छा से, फ़ाइल विशेषताओं को शामिल etckeeper init -d / किया गया, मेरे लिए काम किया, लेकिन बाद में विस्तार को भूल जाना कष्टप्रद है। तो इस विवरण को बचाने के लिए सबसे अच्छा है। इसके अलावा, uninitवीसीएस का उपयोग पूर्ववत नहीं करता है, यह सिर्फ पूरे स्थानीय रेपो को हटा देता है।


0

मुझे नहीं लगता कि एटकीपर ऐसा करेगा, लेकिन समाधान के एक जोड़े हैं:

  1. लिंक को उल्टा करें: फाइलसिस्टम पर / / / में फाइल के लिए एक लिंक बाहर रखें

  2. उन फ़ाइलों की प्रतिलिपि स्क्रिप्टिंग में / etc (बैकअप) और बाहर / etc (पुनर्स्थापित) करें। फिर उन लिपियों का समय-समय पर या एक उपयुक्त गिट हुक में उपयोग करें।


2
जबकि रिवर्स लिंक एक अच्छा विचार है, और मैं इसे कुछ मामलों में उपयोग करता हूं ऐसे मामले हैं जहां यह काम नहीं करेगा। विशेष रूप से अपने grub.confया आप बूट करने में सक्षम नहीं होंगे के लिए रिवर्स लिंक की कोशिश मत करो ।
ज़ॉडेचेस

@Zoredache - बिल्कुल सही। हालाँकि रिवर्स लिंक शायद मेरी ओरेकल फाइलों के लिए काम करेगा। और @ @ pzz की प्रतिलिपि विधि शायद बूट (grub + कर्नेल कॉन्फ) पर कुछ भी काम करेगी। मैं अगले सप्ताह इसकी कोशिश करूंगा।
ErebusBat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.