रोटेशन के बाद मैं अपनी लॉग फाइल को डिलीट नहीं करने के लिए लॉगरोट को कैसे कॉन्फ़िगर करूं?


24

ऐसा करने का एक तरीका है?


क्या आप हमें बता सकते हैं कि आप ऐसा क्यों करना चाहते हैं? शायद वहाँ अन्य विकल्प हैं ...
chmeee

मेरे मामले में बाहरी भंडारण के लिए बड़े पुराने लॉग को डाउनलोड करना और सर्वर पर नए लोगों को रखना अच्छा होगा। इसलिए मुझे एक साधारण लॉग स्प्लिटर की आवश्यकता है।
1

2
इस कॉन्फ़िगरेशन के लिए मेरा उपयोग मामला है: मैं अपने लॉग को हमेशा के लिए रखना चाहता हूं, क्योंकि मुझे ऑडिटिंग उद्देश्यों के लिए इसकी आवश्यकता हो सकती है, लेकिन मैं चाहता हूं कि मेरी फाइलें घुमाई जाएं ताकि वर्तमान लॉग बहुत बड़ा न हो और घुमाया जा सके संकुचित - अन्यथा, बाहरी सर्वर में लॉग का बैकअप बहुत मुश्किल होता है, और फाइलों का निरीक्षण करना भी धीमा हो जाता है।
रुडोल्फ मेयर

जवाबों:


32

अपने logrotate.conf (या समतुल्य logrotate.d फ़ाइल) में, उस पंक्ति को बदलें जो कहती है "

rotate 10

(आपकी संख्या भिन्न हो सकती है) बड़ी संख्या के लिए। यह इसे लॉग के कई दिनों तक रखने के लिए बताएगा। आप इसे 36500 कर सकते हैं, जो आपको 100 साल तक चलेगा।


6
जब मैंने एक रास्पबेरी पाई (रास्पियन) पर ऐसा किया, तो इसने हर रात इसे फ्रीज कर दिया। एक बार जब मैंने सीरियल कंसोल का उपयोग करके चल रही प्रक्रियाओं और खुली फाइलों को खरीदा और पता चला कि यह बिना किसी फाइल के 100000 का नाम बदलने की कोशिश करती है। इसलिए इससे सावधान रहें। दुर्भाग्य से मेरे पास अधिक विस्तृत जानकारी नहीं है
क्रिश्चियन

0

मैं अपने डेटाबेस बैकअप के रोटेशन को दैनिक, साप्ताहिक और मासिक करने के लिए इसे देख रहा हूं; इसलिए मैं फाइल को रोज घुमाता हूं लेकिन साप्ताहिक रोटेशन करने के लिए फाइल को रखता हूं, और वार्षिक रोटेशन के लिए भी।

प्रतिलिपि विकल्प का उपयोग करें। मैनुअल से:

copy

प्रतिलिपि लॉग फ़ाइल की प्रतिलिपि बनाएँ, लेकिन मूल को बिल्कुल न बदलें। इस विकल्प का उपयोग, उदाहरण के लिए, वर्तमान लॉग फ़ाइल का स्नैपशॉट बनाने के लिए किया जा सकता है, या जब कुछ अन्य उपयोगिता के लिए फ़ाइल को छोटा या पार्स करना पड़ता है। जब इस विकल्प का उपयोग किया जाता है, तो बनाने के विकल्प पर कोई प्रभाव नहीं पड़ेगा, क्योंकि पुरानी लॉग फ़ाइल जगह पर रहती है।


यह नीचे दी गई टिप्पणी के समान है ( serverfault.com/a/50186/275485 ), और सही उत्तर नहीं देता है; कॉपी का मतलब यह नहीं है कि आपकी पुरानी फ़ाइलें जो घुमाई गई थीं, वे नष्ट नहीं हुई हैं ..
रुडोल्फ मेयर

-3

उस बिंदु को अलग करते हुए, जिसमें रोटेशन में विलोपन शामिल है ... ;-)

ऐसा लगता है कि आप बस 'फ़ाइल' शब्द को उपयुक्त फ़ाइल (संभवतः /etc/logrotate.d में) जोड़ सकते हैं। उदाहरण के लिए, एक अपाचे 2 लोगो स्क्रिप्ट इस तरह दिखेगा:

/var/log/apache2/*.log {
    साप्ताहिक
    missingok
    घुमाएँ 52
    संकुचित करें
    delaycompress
    notifempty
    प्रतिलिपि
    sharedscripts
    postrotate
        अगर [-f "`। / etc / apache2 / envvars; गूंज $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; फिर
            /etc/init.d/apache2 reload> / dev / null
        फाई
    endscript
}

कोशिश करें कि, और देखें कि यह वही करता है जो आप चाहते हैं।


2
यह मानते हुए कि वह चाहता है कि फाइलें "घुमाई जाएं" लेकिन कभी भी पुरानी फाइलों को हटाएं नहीं, यह ऐसा नहीं करेगा। कॉन्फ़िगरेशन श्लोक में "कॉपी" जोड़ने का मतलब है कि मूल फ़ाइल हमेशा के लिए बढ़ती रहेगी लेकिन अंततः फ़ाइल की पुरानी प्रतियां हटा दी जाएंगी। जैसा कि मैं इसे समझता हूं, "कॉपी" मुख्य रूप से उपयोगी है जब आप मूल को हटाने / हटाने के लिए किसी अन्य प्रक्रिया की अपेक्षा करते हैं।
Insyte

बिल्कुल, जो मैंने सोचा था कि वह पूछ रहा था। उन्होंने विशेष रूप से "मेरी लॉग फ़ाइलों को न हटाने" का तरीका पूछा, न कि "मेरी लॉग फ़ाइलों के पुराने अभिलेखों को हटाने" का तरीका। लगता है कि मुझे उन सवालों से अधिक सावधान रहना चाहिए, जिनमें सिर्फ एक विषय और कोई शरीर शामिल नहीं है ;-)
जस्टिन एलिसन

2
वाक्यांश "रोटेशन के बाद" एक सुराग प्रदान करता है।
अगली सूचना तक रोक दिया गया।

4
"इस बिंदु को अलग करने से कि रोटेशन में विलोपन शामिल है ..." जरूरी नहीं। रोटेशन में केवल पुराने लॉग को संपीड़ित करना और उन्हें रखना शामिल हो सकता है, जो कि ऐसा लगता है कि प्रश्न पूछता है।
रेफ्लेक्सिव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.