एक और संग्रह भंडारण प्रारूप: डार

परिचय



एक प्रसिद्ध कहावत है कि सिस्टम प्रशासक तीन प्रकारों में विभाजित हैं: वे जो बैकअप नहीं लेते हैं; जो पहले से बैकअप बनाते हैं और जो बैकअप बनाते हैं और वेरीफाई करते हैं, वे काम कर रहे हैं।

हालांकि, यह पर्याप्त नहीं है, और अब बैकअप सिस्टम के उपयोगकर्ता के लिए ऐसा पैरामीटर गति के रूप में महत्वपूर्ण है, और न केवल बैकअप की गति, अर्थात्, फ़ाइलों को संग्रहित करना, बल्कि पुनर्प्राप्ति भी है।

सहमत हूँ, एकल फ़ाइल निकालने के लिए आकार में 50-100-1000 गीगाबाइट के पूरे संग्रह को पढ़ना बेवकूफी है।

और अगर आपके पास ये अभिलेखागार वृद्धिशील हैं, तो वांछित तिथि के लिए एक फ़ाइल को पुनर्स्थापित करने के लिए, आपको क्रम में सभी अभिलेखागार को क्रमिक रूप से पढ़ने की आवश्यकता होगी। और सब कुछ बहुत खराब हो जाता है अगर संग्रह फ़ाइल दूरस्थ सर्वर पर स्थित है।

और अगर आप TAR संग्रह प्रारूप का उपयोग करते हैं तो आप क्या करेंगे। आखिरकार, यह अभिलेखागार के लिए उद्योग मानक है, और इसका उपयोग कई बैकअप उपयोगिताओं में किया जाता है।

और इस व्यवहार का कारण बहुत सरल है - अनुक्रमित की कमी, जिस पर आप संग्रह से एक फ़ाइल खींच सकते हैं।

TAR में आमतौर पर कई कमियां होती हैं, जिनमें से कई घातक होती हैं। मैं अध्ययन के दौरान मुझे मिली मुख्य कमियों की एक छोटी सूची दूंगा:



और यह सिर्फ वही है जो मुझे इस कदम पर याद आया।

मैंने अभिलेखागार (ज़िप, आरएआर, 7zip) और यहां तक ​​कि बैकअप के लिए राक्षसी प्रणालियों के सभी प्रकार का व्यापक अध्ययन किया: खुला स्रोत (या सशर्त रूप से खुला) जैसे बेकुला, और मालिकाना।

और उन्होंने पुरालेख प्रारूप पाया, जिसने कमोबेश मुझे और कंपनी को सभी मामलों में व्यवस्थित किया और मेरे कार्य को अनुकूल बनाया।

मेरा सुझाव है कि आप डार अभिलेखागार पर ध्यान दें और इसके फायदे और नुकसान के बारे में संक्षेप में बात करें (वे मौजूद हैं, लेकिन उनमें से कुछ हैं, और आप उनके साथ रह सकते हैं), और फिर मैं व्यावहारिक उदाहरणों की ओर रुख करूंगा।

गौरव





ये केवल इसके मुख्य फायदे हैं, सामान्य तौर पर, डार सुविधाओं में बहुत समृद्ध है और आदमी से बोली यह सबसे अच्छा कहती है: "... लेकिन कमांड लाइन विकल्पों के लिए उपलब्ध अप्रयुक्त पत्र की कमी के कारण ..."।

परियोजना सक्रिय रूप से विकसित हो रही है और डेवलपर द्वारा अच्छी तरह से समर्थित है। मुझे कुछ दिनों के भीतर अपने सवालों का जवाब मिल गया, और जवाब हमेशा बहुत जानकारीपूर्ण होते हैं। मैं केवल एक ही परियोजना को समर्थन के समान स्तर के साथ जानता हूं - libguestfs , वैसे, मैंने पहले ही इसके बारे में लिखा था

कमियों





ऐसा नहीं है कि यह एक दोष है, लेकिन डार बहुत ही क्रियात्मक है। यदि टार ऑपरेशन के बाद एक पंक्ति लिखता है, तो डार बहुत कुछ और महान विस्तार से लिखता है। और हां, इसे बंद किया जा सकता है (अभी तक कोई नहीं बचा है >/dev/null 2>&1 )।

व्यावहारिक काम



मैं शर्त लगाता हूं कि दर्शकों का हिस्सा पहले से ही अपने पसंदीदा वितरण में डार स्थापित करने के लिए चला है और आदमी को अपने दम पर पढ़ा है। जो रुके थे, उनके लिए मैं आपको बताऊंगा कि इसका उपयोग कैसे किया जाए। और जब उत्साही वापस लौटते हैं, तो मैं आपको दिखाऊंगा कि इस अद्भुत उपयोगिता का उपयोग कैसे करें, और कुछ बुनियादी अवधारणाओं के बारे में बात करें जो आपको man dar पन्नों पर man dar

संग्रह



पहला उदाहरण, सबसे सरल:

dar -R $HOME -c /mnt/backup/archive


अभिलेखागार / घर निर्देशिका।

आइए कुछ निर्देशिकाओं को छोड़ दें (~ / फिल्में, ~ / डाउनलोड):

dar -R $HOME -c /mnt/backup/archive -P movies -P downloads


मुझे लगता है कि सभी ने पहले ही देखा है कि संग्रह के नाम में .dar फ़ाइल एक्सटेंशन का उल्लेख नहीं है। और आंकड़ा 1 फ़ाइल नाम में कहीं से आया है। यह सब इसलिए है क्योंकि डार मूल रूप से हटाने योग्य मीडिया (सीडी, डीवीडी, या, उदाहरण के लिए, टेप ड्राइव) के लिए बैकअप के लिए अभिप्रेत था, इसलिए यह स्लाइस में संग्रहीत करता है , और संख्या 1 दिखाई देती है क्योंकि यह टुकड़ा पहला है । और चूंकि हमने कुंजी -s 100M निर्दिष्ट नहीं की है - और केवल एक। डार के पास कुछ संचालन करते समय स्क्रिप्ट चलाने की कुंजी भी होती है (टार में भी ऐसी कुंजी होती है)। उदाहरण के लिए, जब एक स्लाइस रिकॉर्ड की जाती है, तो आप एक स्क्रिप्ट निष्पादित कर सकते हैं और माध्यम को बदल सकते हैं, और फिर से और इतने पर।

सामान्य तौर पर, संग्रह को कई भागों में तोड़ना किसी को आश्चर्यचकित नहीं करेगा।

डिफ़ॉल्ट रूप से, संपीड़न के बिना dar अभिलेखागार, और संपीड़न को सक्षम करने के लिए आपको -z algo:level पास करना होगा -z algo:level स्विच। समर्थित gzip, bzip2, lzo हैं। और आउटपुट में हमें समान .N.dar फ़ाइल मिलती है, बिना किसी .gz और अन्य को जोड़े। संग्रहकर्ता खुद जानता है कि उसके अंदर क्या है।

आइए निम्नलिखित अच्छाइयों पर जाएं - संग्रह के दौरान संपीड़न के अपवाद:

dar -R $HOME -c /mnt/backup/archive -Y "*.txt" "*.fb2" -Z "*.mp4"


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

और अब चलो अंतर, वृद्धिशील और सबसे स्वादिष्ट - वृद्धिशील बैकअप शुरू करते हैं।

अगर किसी को पता नहीं है कि इसका क्या मतलब है - निडर, मैं बताऊंगा:



उसी समय, कोई भी आपको एक ही समय में वृद्धिशील और डिक्रीमेंटल बैकअप दोनों को लागू करने के लिए परेशान नहीं करता है। इसलिए दो सप्ताह में एक बैकअप इस तरह दिख सकता है (सप्ताह के दिन शीर्ष पर हैं, बैकअप प्रकार d- नीचे दशमलव में वृद्धि है, + मैं वृद्धिशील है):

MTWTFSSMTWTFS
d- d- d- d- d- d- f +i +i +i +i +i +i


यह एक पूर्ण कॉपी करने के लिए संभव बनाता है, अंतरिक्ष की एक महत्वपूर्ण राशि की बचत करेगा।

आपको यह भी पता होना चाहिए कि वृद्धिशील संग्रह बनाने के लिए आपको केवल एक चीज की आवश्यकता होगी जो एक सूचकांक है। Dar के संदर्भ में, एक सूचकांक को एक निर्देशिका कहा जाता है, और किसी फ़ाइल में सूचकांक को संग्रहीत करने को निर्देशिका अलगाव कहा जाता है। इसके अलावा, मैं केवल शब्दों के वृद्धिशील / घटाव का उपयोग करूंगा क्योंकि अंतर संग्रह वृद्धिशील का एक विशेष मामला है।

तो, एक वृद्धिशील संग्रह बनाएँ:

dar -R $HOME -c /mnt/backup/archive_monday -A /mnt/backup/archive


अब एक और करते हैं:

dar -R $HOME -c /mnt/backup/archive_tuesday -A /mnt/backup/archive_monday


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

dar -R $HOME -c /mnt/backup/archive_wednesday -A /mnt/backup/archive_tuesday -@ /mnt/backup/CAT_archive_wednesday


और अब चलो केवल CAT आर्काइव वेडनेसडे इंडेक्स का उपयोग करते हुए एक बार एक बैकअप बनाएं:

dar -R $HOME -c /mnt/backup/archive_thursday -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday


ठीक है, हमने परिचित वृद्धिशील बैकअप को छाँट लिया है, लेकिन किस प्रकार का जानवर घटता हुआ बैकअप है?

शुरू करने के लिए, हमें एक कल के संपूर्ण संग्रह की आवश्यकता है, जिसमें से हम दशमलव में वृद्धि करेंगे, और आज का पूरा।

dar -R $HOME -c /mnt/backup/archive_sunday
dar -R $HOME -+ /mnt/backup/archive_saturday_decremental -A /mnt/backup/archive_saturday -@ /mnt/backup/archive_sunday -ad


सामान्य तौर पर, यहां सब कुछ थोड़ा भ्रमित है (इसके लिए उपयोग किया जाता है), क्योंकि -+ प्रलेखन के अनुसार दो अभिलेखागार को संयोजित करने के लिए बनाया गया था, और -@ , जैसा कि हमने पहले ही कहा है, मक्खी पर निर्देशिका को अलग करने का कार्य करता है, और -ad लागू करने के लिए इन कुंजियों के व्यवहार को बदलता है। घटती। एक तरह से, यह तर्कसंगत है। शायद।

ठीक है, हम सत्य के क्षण को प्राप्त हुए - डेटा रिकवरी। सब के बाद, हर कोई समझता है कि एक बैकअप जिसे बहाल नहीं किया जा सकता है, वह एक अनमैन्ड बैकअप के लिए एक समान है?

बहाल करने से पहले, संग्रह की जांच करना अच्छा होगा:

dar -t /mnt/backup/archive_sunday

यदि dar ने एक त्रुटि कोड नहीं दिया है (man'a के अंत में सभी संभावित निकास कोड सूचीबद्ध हैं जो dar वापस आ सकते हैं), तो आप पुनर्स्थापित कर सकते हैं:

mkdir sunday
dar -x /mnt/backup/archive_sunday -R sunday

रिमोट मशीन संचालन



फ़ाइल वसूली



मैंने पहले ही उल्लेख किया है कि पाइप के माध्यम से दूरस्थ मशीनों से फ़ाइलों को पुनर्स्थापित करना (उदाहरण के लिए, ssh के माध्यम से) एक गैर-तुच्छ कार्य है।

मैं विस्तार से बताने की कोशिश करूंगा कि यह कैसे काम करता है।

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

सूचकांक को पढ़ने के साथ समस्या को हल करने के लिए, dar के दो संस्करण बनाए गए थे:



इसलिए, कार्य की योजना (वसूली के लिए) इस तरह दिखती है:

(2) --> dar --> (1) --> dar_slave archive --> (2)


  1. dar with पाइप का कहना है dar_slave: "मैं फ़ाइल A को पुनर्स्थापित करना चाहता हूं"।
  2. dar_slave आर्काइव फ़ाइल के इंडेक्स को पढ़ता है, यह पता लगाता है कि फ़ाइल किस ऑफसेट पर स्थित है, और इसे stdout में पास करता है, जो dar पढ़ता है और परिणामस्वरूप फाइल को डिस्क पर लिखता है।


कठिनाई फ़ाइल को dar_slave से dar में स्थानांतरित करना है। इस तरह के "रिंग" डेटा ट्रांसफर के लिए हमें mkfifo का उपयोग करके एक छोटी बैसाखी बनानी होगी:

mkfifo /tmp/fifo<.code>
dar -x -i /tmp/fifo -R sunday | ssh user@host dar_slave sunday > /tmp/fifo

rm /tmp/fifo

, , , NFS.



: , :

dar -R $HOME -c - -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday | ssh user@host 'cat > archive_thursday'




dar dar_manager, dar. , , , , (, , , ).

, , .

, , , : production-, , , , , .

dar dar_static: , .



, ( ), dar. Ubuntu 12.04 , dar 2.4.2, / . dar 2.4.12 .

, , 2.4, dar 2.3 .

mkfifo /tmp/fifo<.code>
dar -x -i /tmp/fifo -R sunday | ssh user@host dar_slave sunday > /tmp/fifo

rm /tmp/fifo

, , , NFS.



: , :

dar -R $HOME -c - -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday | ssh user@host 'cat > archive_thursday'




dar dar_manager, dar. , , , , (, , , ).

, , .

, , , : production-, , , , , .

dar dar_static: , .



, ( ), dar. Ubuntu 12.04 , dar 2.4.2, / . dar 2.4.12 .

, , 2.4, dar 2.3 .

mkfifo /tmp/fifo<.code>
dar -x -i /tmp/fifo -R sunday | ssh user@host dar_slave sunday > /tmp/fifo

rm /tmp/fifo

, , , NFS.



: , :

dar -R $HOME -c - -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday | ssh user@host 'cat > archive_thursday'




dar dar_manager, dar. , , , , (, , , ).

, , .

, , , : production-, , , , , .

dar dar_static: , .



, ( ), dar. Ubuntu 12.04 , dar 2.4.2, / . dar 2.4.12 .

, , 2.4, dar 2.3 .

mkfifo /tmp/fifo<.code>
dar -x -i /tmp/fifo -R sunday | ssh user@host dar_slave sunday > /tmp/fifo

rm /tmp/fifo

, , , NFS.



: , :

dar -R $HOME -c - -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday | ssh user@host 'cat > archive_thursday'




dar dar_manager, dar. , , , , (, , , ).

, , .

, , , : production-, , , , , .

dar dar_static: , .



, ( ), dar. Ubuntu 12.04 , dar 2.4.2, / . dar 2.4.12 .

, , 2.4, dar 2.3 .

mkfifo /tmp/fifo<.code>
dar -x -i /tmp/fifo -R sunday | ssh user@host dar_slave sunday > /tmp/fifo

rm /tmp/fifo

, , , NFS.



: , :

dar -R $HOME -c - -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday | ssh user@host 'cat > archive_thursday'




dar dar_manager, dar. , , , , (, , , ).

, , .

, , , : production-, , , , , .

dar dar_static: , .



, ( ), dar. Ubuntu 12.04 , dar 2.4.2, / . dar 2.4.12 .

, , 2.4, dar 2.3 .

mkfifo /tmp/fifo<.code>
dar -x -i /tmp/fifo -R sunday | ssh user@host dar_slave sunday > /tmp/fifo

rm /tmp/fifo

, , , NFS.



: , :

dar -R $HOME -c - -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday | ssh user@host 'cat > archive_thursday'




dar dar_manager, dar. , , , , (, , , ).

, , .

, , , : production-, , , , , .

dar dar_static: , .



, ( ), dar. Ubuntu 12.04 , dar 2.4.2, / . dar 2.4.12 .

, , 2.4, dar 2.3 .

mkfifo /tmp/fifo<.code>
dar -x -i /tmp/fifo -R sunday | ssh user@host dar_slave sunday > /tmp/fifo

rm /tmp/fifo

, , , NFS.



: , :

dar -R $HOME -c - -A /mnt/backup/CAT_archive_wednesday -@ /mnt/backup/CAT_archive_thursday | ssh user@host 'cat > archive_thursday'




dar dar_manager, dar. , , , , (, , , ).

, , .

, , , : production-, , , , , .

dar dar_static: , .



, ( ), dar. Ubuntu 12.04 , dar 2.4.2, / . dar 2.4.12 .

, , 2.4, dar 2.3 .

Source: https://habr.com/ru/post/In215449/


All Articles