मैं वर्तमान में अपने ZFS-आधारित NAS को रात और साप्ताहिक रूप से स्नैपशॉट कर रहा हूं, एक ऐसी प्रक्रिया जिसने मेरे गधे को कुछ समय बचाया है। हालाँकि, जबकि स्नैपशॉट का निर्माण स्वचालित है (क्रोन से), पुराने स्नैपशॉट को हटाना अभी भी एक मैन्युअल कार्य है। जाहिर है कि एक जोखिम है कि अगर मैं किसी बस की चपेट में आ जाऊं या मैनुअल टास्क न किया जाए तो एनएएस डिस्क स्थान से बाहर चला जाएगा।
क्या किसी के पास अपने ZFS सिस्टम पर संग्रहीत स्नैपशॉट की संख्या को प्रबंधित करने के लिए कोई अच्छा तरीका / स्क्रिप्ट है? आदर्श रूप से, मैं एक स्क्रिप्ट पसंद करूंगा जो किसी दिए गए ZFS फाइल सिस्टम के लिए सभी स्नैपशॉट के माध्यम से पुनरावृत्त करता है और उस फाइल सिस्टम के लिए अंतिम n स्नैपशॉट को हटा देता है ।
जैसे मुझे दो फाइल सिस्टम मिले हैं, एक को कॉल किया गया tank
और दूसरे को कॉल किया गया sastank
। स्नैपशॉट्स को उस तारीख के साथ नामित किया जाता है जिस पर वे बनाए गए थे: sastank@AutoD-2011-12-13
इसलिए एक साधारण sort
आदेश उन्हें क्रम में सूचीबद्ध करना चाहिए। मैं पिछले 2 सप्ताह के दैनिक स्नैपशॉट के मूल्य को चालू रखना चाहता हूं tank
, लेकिन केवल पिछले दो दिनों के स्नैपशॉट के लायक है sastank
।
sort -r
किsed
कमांड से पहले इसकी जरूरत है ।sed
पहली 15 लाइनों से परे सूची के निचले हिस्से को आउटपुट करने के लिए लगता है, जो कि डिफ़ॉल्ट क्रम में सबसे हाल ही में है। सूची को फ़्लिप करने का मतलब है कि मुझे सबसे नीचे स्नैपशॉट मिलें।