amazon web services एडब्ल्यूएस एस 3 बाल्टी के लिए बैकअप रणनीतियां




amazon-web-services amazon-s3 (5)

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

  1. ऑब्जेक्ट संस्करणों को स्थायी रूप से हटाएं - बाल्टी के संस्करण पर एमएफए हटाएं सक्षम करें।

  2. आकस्मिक रूप से बाल्टी को हटाने - एमएफए प्रमाणीकरण के बिना हटाए जाने से इनकार करने वाली बाल्टी नीति सेट करें।

डेटा हानि के जोखिम को कम करने और पुनर्प्राप्ति परिदृश्य में सुधार करने के लिए क्रॉस-क्षेत्र प्रतिकृति और versioning साथ युगल।

अधिक जानकारी के साथ इस विषय पर एक ब्लॉग पोस्ट यहां दिया गया है।

मैं एस 3 बाल्टी का बैक अप लेने के लिए कुछ सलाह या सर्वोत्तम अभ्यास की तलाश में हूं।
एस 3 से डेटा का बैक अप लेने का उद्देश्य निम्न कारणों से डेटा हानि को रोकने के लिए है:

  1. एस 3 मुद्दा
  2. मुद्दा जहां मैं गलती से एस 3 से इस डेटा को हटा देता हूं

कुछ जांच के बाद मैं निम्नलिखित विकल्पों को देखता हूं:

  1. वर्जनिंग का उपयोग करें http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html
  2. एडब्ल्यूएस एसडीके का उपयोग कर एक एस 3 बाल्टी से दूसरे में कॉपी करें
  3. अमेज़ॅन ग्लेशियर के लिए बैकअप http://aws.amazon.com/en/glacier/
  4. उत्पादन सर्वर पर बैकअप, जिसका बैक अप लिया गया है

मुझे कौन सा विकल्प चुनना चाहिए और केवल एस 3 पर डेटा स्टोर करना कितना सुरक्षित होगा? अपनी राय सुनना चाहते हैं।
कुछ उपयोगी लिंक:


S3 बाल्टी पर आसानी से उपलब्ध क्रॉस क्षेत्र प्रतिकृति सुविधा का उपयोग करने के बारे में कैसे? सुविधा के बारे में कुछ उपयोगी लेख यहां दिए गए हैं


मूल रूप से मेरे ब्लॉग पर पोस्ट किया गया: http://eladnava.com/backing-up-your-amazon-s3-buckets-to-ec2/

समय-समय पर अपने एस 3 बाल्टी को ईसी 2 सर्वर में सिंक करें

इसे एकाधिक कमांड लाइन उपयोगिताओं का उपयोग करके आसानी से हासिल किया जा सकता है जो स्थानीय फाइल सिस्टम में रिमोट एस 3 बाल्टी को सिंक करना संभव बनाता है।

s3cmd
सबसे पहले, s3cmd बेहद आशाजनक लग रहा था। हालांकि, मेरी विशाल एस 3 बाल्टी पर कोशिश करने के बाद - यह Segmentation fault करने में विफल रहा। हालांकि, यह छोटी बाल्टी पर ठीक काम करता था। चूंकि यह भारी बाल्टी के लिए काम नहीं करता है, इसलिए मैंने एक विकल्प खोजने के लिए तैयार किया।

s4cmd
s3cmd लिए नए, बहु थ्रेडेड विकल्प। हालांकि, और भी आशाजनक लग रहा था, हालांकि, मैंने देखा कि यह उन फाइलों को फिर से डाउनलोड करना जारी रखता है जो स्थानीय फाइल सिस्टम पर पहले से मौजूद थे। यह सिंक कमांड से अपेक्षित व्यवहार नहीं है। यह जांचना चाहिए कि दूरस्थ फ़ाइल पहले से मौजूद है या नहीं (हैश / फाइलसाइज जांच साफ हो जाएगी) और उसी लक्ष्य निर्देशिका पर चलने वाले अगले सिंक में इसे छोड़ दें। मैंने इस अजीब व्यवहार की रिपोर्ट करने के लिए एक मुद्दा ( bloomreach/s4cmd/#46 ) खोला। इस बीच, मैं एक और विकल्प खोजने के लिए तैयार किया।

awscli
और फिर मुझे awscli मिला। यह अमेज़ॅन के आधिकारिक कमांड लाइन इंटरफ़ेस है जो विभिन्न क्लाउड सेवाओं के साथ बातचीत करने के लिए है, एस 3 शामिल है।

यह एक उपयोगी सिंक कमांड प्रदान करता है जो आपके स्थानीय फाइल सिस्टम में दूरस्थ बाल्टी फ़ाइलों को तेज़ी से और आसानी से डाउनलोड करता है

$ aws s3 sync s3://your-bucket-name /home/ubuntu/s3/your-bucket-name/

लाभ:

  • स्केलेबल - विशाल एस 3 बाल्टी का समर्थन करता है
  • बहु थ्रेडेड - एकाधिक धागे का उपयोग करके फ़ाइलों को तेज़ी से सिंक करता है
  • स्मार्ट - केवल नई या अद्यतन फ़ाइलों को सिंक करता है
  • तेज़ - इसकी बहु-थ्रेडेड प्रकृति और स्मार्ट सिंक एल्गोरिदम के लिए धन्यवाद

दुर्घटनाग्रस्त हटाना

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

उबंटू 14.04 एलटीएस पर awscli सेट अप

चलो awscli स्थापित करके शुरू करते हैं। ऐसा करने के कई तरीके हैं, हालांकि, मुझे apt-get माध्यम से इसे इंस्टॉल करना सबसे आसान apt-get

$ sudo apt-get install awscli

विन्यास

इसके बाद, हमें उपयोगकर्ता को बनाकर और AmazonS3ReadOnlyAccess नीति को संलग्न करके, हमारे एक्सेस कुंजी आईडी और गुप्त कुंजी के साथ awscli को कॉन्फ़िगर करने की आवश्यकता है, जिसे आपको IAM से प्राप्त करना होगा। इससे आपको या किसी भी व्यक्ति को आपकी एस 3 फाइलों को हटाने से इन प्रमाण-पत्रों तक पहुंच प्राप्त हो जाएगी। अपने एस 3 क्षेत्र, जैसे कि us-east-1 दर्ज करना सुनिश्चित करें।

$ aws configure

तैयारी

आइए स्थानीय एस 3 बैकअप निर्देशिका तैयार करें, अधिमानतः /home/ubuntu/s3/{BUCKET_NAME} । अपने वास्तविक बाल्टी नाम के साथ {BUCKET_NAME} को प्रतिस्थापित करना सुनिश्चित करें।

$ mkdir -p /home/ubuntu/s3/{BUCKET_NAME}

प्रारंभिक सिंक

आइए आगे बढ़ें और बाल्टी को निम्न आदेश के साथ पहली बार सिंक करें:

$ aws s3 sync s3://{BUCKET_NAME} /home/ubuntu/s3/{BUCKET_NAME}/

बाल्टी मानते हुए, एडब्ल्यूएस क्रेडेंशियल्स और क्षेत्र सही हैं, और गंतव्य फ़ोल्डर मान्य है, awscli स्थानीय फाइल सिस्टम में पूरी बाल्टी डाउनलोड करना शुरू कर देगा।

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

एक क्रॉन नौकरी की स्थापना

आगे बढ़ें और /home/ubuntu/s3 में sync.sh फ़ाइल बनाएं:

$ nano /home/ubuntu/s3/sync.sh

निम्न कोड को sync.sh में कॉपी और पेस्ट करें:

#!/bin/sh

# Echo the current date and time

echo '-----------------------------'
date
echo '-----------------------------'
echo ''

# Echo script initialization
echo 'Syncing remote S3 bucket...'

# Actually run the sync command (replace {BUCKET_NAME} with your S3 bucket name)
/usr/bin/aws s3 sync s3://{BUCKET_NAME} /home/ubuntu/s3/{BUCKET_NAME}/

# Echo script completion
echo 'Sync complete'

{SUCKET_NAME} को अपने S3 बाल्टी नाम के साथ, स्क्रिप्ट में दो बार प्रतिस्थापित करना सुनिश्चित करें।

प्रो टिप: आपको aws बाइनरी से लिंक करने के लिए /usr/bin/aws का उपयोग करना चाहिए, क्योंकि crontab सीमित शेल वातावरण में कमांड निष्पादित करता है और निष्पादन योग्य को अपने आप नहीं ढूंढ पाएगा।

इसके बाद, स्क्रिप्ट को chmod करना सुनिश्चित करें ताकि इसे crontab द्वारा निष्पादित किया जा सके।

$ sudo chmod +x /home/ubuntu/s3/sync.sh

आइए यह सुनिश्चित करने के लिए स्क्रिप्ट को चलाने का प्रयास करें कि यह वास्तव में काम करता है:

$ /home/ubuntu/s3/sync.sh

आउटपुट इस तरह होना चाहिए:

इसके बाद, निम्न आदेश निष्पादित करके वर्तमान उपयोगकर्ता के crontab को संपादित करें:

$ crontab -e

यदि यह पहली बार crontab -e निष्पादित करने वाला है, तो आपको एक पसंदीदा संपादक चुनना होगा। मैं nano चयन करने की सिफारिश करता हूं क्योंकि शुरुआती लोगों के साथ काम करना सबसे आसान है।

आवृत्ति सिंक करें

हमें crontab को यह बताने की ज़रूरत है कि कितनी बार हमारी स्क्रिप्ट को चलाने के लिए और जहां स्क्रिप्ट स्थानीय फाइल सिस्टम पर कमांड लिखकर रहता है। इस आदेश के लिए प्रारूप निम्नानुसार है:

m h  dom mon dow   command

निम्न आदेश crontab को हर घंटे sync.sh स्क्रिप्ट चलाने के लिए कॉन्फ़िगर करता है (मिनट: 0 और घंटे: * पैरामीटर के माध्यम से निर्दिष्ट) और इसे स्क्रिप्ट के आउटपुट को हमारी s3 निर्देशिका में sync.log फ़ाइल में पाइप करने के लिए:

0 * * * * /home/ubuntu/s3/sync.sh > /home/ubuntu/s3/sync.log

आपको इस लाइन को crontab फ़ाइल के नीचे जोड़ना चाहिए जिसे आप संपादित कर रहे हैं। फिर, आगे बढ़ें और Ctrl + W दबाकर फ़ाइल को डिस्क पर सहेजें और फिर एंटर करें । फिर आप Ctrl + X दबाकर nano से बाहर निकल सकते हैं। crontab अब हर घंटे सिंक कार्य चलाएगा।

प्रो टिप: आप यह सत्यापित कर सकते हैं कि /home/ubuntu/s3/sync.log निरीक्षण करके घंटे की क्रॉन नौकरी सफलतापूर्वक निष्पादित की जा रही है, निष्पादन दिनांक और समय के लिए इसकी सामग्री जांच रही है, और यह देखने के लिए लॉग की जांच कर रही है कि कौन सी नई फाइलें सिंक की गई हैं ।

सब तैयार! आपकी एस 3 बाल्टी अब आपके ईसी 2 सर्वर को स्वचालित रूप से हर घंटे सिंक हो जाएगी, और आपको जाने के लिए अच्छा होना चाहिए। ध्यान दें कि समय के साथ, आपकी एस 3 बाल्टी बड़ी हो जाती है, इसलिए आपको नई फाइलों को समायोजित करने के लिए अपने ईसी 2 सर्वर के ईबीएस वॉल्यूम आकार को बढ़ाना पड़ सकता है। आप इस गाइड का पालन ​​करके हमेशा अपने ईबीएस वॉल्यूम आकार को बढ़ा सकते हैं


आपको लगता है कि अब एक diff क्षेत्र पर कुछ प्रकार के incremental बैकअप पकड़ने के लिए एक आसान तरीका होगा।

उपर्युक्त सभी सुझाव वास्तव में सरल या सुरुचिपूर्ण समाधान नहीं हैं। मैं वास्तव में ग्लेशियर को एक विकल्प नहीं मानता क्योंकि मुझे लगता है कि एक संग्रह समाधान के बाद एक बैकअप समाधान है। जब मुझे बैकअप लगता है तो मुझे लगता है कि एक जूनियर डेवलपर से आपदा रिकवरी एक बाल्टी को हटाने या शायद आपके ऐप में एक शोषण या बग है जो एस 3 से सामान हटा देती है।

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


आप निम्न विधियों का उपयोग करके अपने एस 3 डेटा का बैकअप ले सकते हैं

  1. AWS डेटापिपलाइन का उपयोग करके अनुसूची बैकअप प्रक्रिया, यह नीचे उल्लिखित 2 तरीकों से किया जा सकता है:

    ए। डेटापिपलाइन की कॉपी एक्टिविटी का उपयोग करके आप एक एस 3 बाल्टी से दूसरी एस 3 बाल्टी में कॉपी कर सकते हैं।

    ख। डेटापिपलाइन और "S3distcp" की शेलएक्टिविटी का उपयोग बाल्टी से दूसरे (समानांतर में) से रिकर्सिव एस 3 फ़ोल्डर्स की रिकर्सिव कॉपी करने के लिए करता है।

  2. डेटा के विभिन्न संस्करण को बनाए रखने के लिए एस 3 बाल्टी के अंदर वर्जनिंग का उपयोग करें

  3. अपने डेटा का बैकअप लेने के लिए ग्लेशियर का उपयोग करें (इसका उपयोग तब करें जब आपको बैकअप को मूल बाल्टी में बहाल करने की आवश्यकता नहीं होती है (ग्लेशियर से डेटा वापस लेने में कुछ समय लगता है क्योंकि डेटा संपीड़ित प्रारूप में संग्रहीत होता है) या जब आप सहेजना चाहते हैं किसी अन्य एस 3 बाल्टी फ्रो बैकअप का उपयोग करने से बचने के लिए कुछ लागत), यह विकल्प आसानी से एस 3 बाल्टी पर जीवन चक्र नियम का उपयोग करके सेट किया जा सकता है, जिसे आप बैकअप लेना चाहते हैं।

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





amazon-glacier