किसी विशेष समय में एक संस्करण S3 बाल्टी को पुनर्स्थापित करें


16

मान लीजिए कि मैंने अपनी बाल्टी के लिए S3 संस्करण सक्षम कर लिया है: http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

फिर, मान लें कि कोई व्यक्ति (उदाहरण के लिए, जूनियर कर्मचारी) S3 बाल्टी को गड़बड़ करता है (कुछ फ़ाइलों को गलती से हटा देता है, आदि)

मैं समय में एक विशेष बिंदु पर पूरे संस्करण की बाल्टी को कैसे पुनर्स्थापित कर सकता हूं? मेरा मानना ​​है कि यह संभव होना चाहिए S3 का एपीआई दिया गया है, लेकिन मुझे ऐसी स्क्रिप्ट लिखने की ज़रूरत नहीं है, कुछ गुम होने के डर से (मैं AWS विशेषज्ञ नहीं हूं)।

क्या इस समस्या के अच्छे समाधान हैं? मैं अपने रेल एप्लिकेशन के लिए एक छवि स्टोर के रूप में S3 बाल्टी का उपयोग कर रहा हूं, इसलिए रूबी-आधारित कुछ ऐसा है जिसे मैं एक रेक कार्य के रूप में उपयोग कर सकता हूं।

जवाबों:


17

आप उपयोग कर सकते हैं s3-pit-restore

S3 पॉइंट इन टाइम रिस्टोर एक ऐसा उपकरण है जिसका उपयोग आप बाल्टी या बाल्टी के एक उप-भाग को दिए गए समय में करने के लिए कर सकते हैं।

s3-pit-restore --bucket my-bucket --dest my-restored-bucket --timestamp "06-17-2016 23:59:50 +2"

वास्तव में क्या प्रदान करता है

  • दिए गए से कम टाइमस्टैम्प वाली सभी फाइलों को पुनर्स्थापित करें
  • एक पूरी बाल्टी या एक बाल्टी उपसर्ग का पुनर्स्थापन
  • एक महान समग्र गति के साथ कई फ़ाइलों के समानांतर डाउनलोड
  • बैंडविड्थ उपयोग को अनुकूलित करने के लिए समानांतर श्रमिकों का अनुकूलन
  • यदि सक्षम हो तो s3 बाल्टी संस्करणों से या ग्लेशियर से पुनर्स्थापित करें

यह मेरे लिए काम नहीं लगता है। उपकरण के वर्णन के बावजूद गंतव्य केवल एक स्थानीय निर्देशिका बनाता है।
आर्थर

आपने मेरा दिन बचाया है। हमें अद्भुत उपकरण की जानकारी देने के लिए धन्यवाद।
साइबरशरीट

2

यदि मैं दस्तावेज़ीकरण को सही ढंग से समझता हूं , जब आपके पास संस्करण को सक्षम करने वाली फ़ाइल को हटाना है तो बस "नवीनतम" संस्करण एक संस्करण संख्या को वापस लौटाता है। हालांकि यह पूरी बाल्टी को बहाल करने की क्षमता नहीं देता है। यह S3 में पिछले संस्करणों को आपकी आवश्यकताओं के लिए उपयुक्त नहीं बनाता है (यानी, डिलीट से रिकवरी)।

एक बैकअप किसी और जगह पर भी रखें। स्टैक ओवरफ्लो का इस पर एक प्रश्न / उत्तर है s3cmd। मुझे यकीन है कि आपको कहीं रूबी-आधारित स्क्रिप्ट मिल सकती है या ज़रूरत पड़ने पर मदद के लिए उस साइट पर पूछ सकते हैं।


सही बात। आप बाल्टी में प्रत्येक व्यक्तिगत वस्तु को संस्करणित कर रहे हैं, न कि बाल्टी को पूरी तरह से।
EEAA

1
ओह, मुझे वह सब समझ में आ रहा है। यही कारण है कि मुझे लगता है कि यह इतना आसान नहीं है। मुझे शायद बाल्टी में सभी फाइलों को ट्रेस करना होगा, प्रत्येक फ़ाइल के लिए संस्करण की जानकारी प्राप्त करनी होगी, और फिर उस तारीख के समय के आधार पर सही आइटम (यदि यह मौजूद है) को मैं "वापस" करना चाहता हूं। इतना आसान नहीं। मैंने सोचा कि अमेजन इस तरह के सामान्य उपयोग के मामले के लिए कुछ होगा, लेकिन अफसोस, नहीं ... तो मैं सोच रहा था कि क्या किसी ने यह थकाऊ स्क्रिप्ट पहले ही लिख दी थी। मैं s3cmdदेखूंगा, लेकिन मुझे S3 पर भी स्नैपशॉट वाले संस्करण पसंद हैं।
एल्सरुडो

इस उत्तर में गलत जानकारी है - एक सरल deleteचिह्न एक विलोपन मार्कर और भविष्य के अनुरोधों को 404 लौटाता है, न कि पिछले संस्करण को। फिर से करने के लिए आप एक पुराने संस्करण को एक नए संस्करण में कॉपी कर सकते हैं या आप deleteवर्तमान ऑब्जेक्ट के एक विशिष्ट संस्करण के साथ कर सकते हैं - फिर भविष्य के getएस को दूसरा-से-नवीनतम संस्करण दिया जाता है। docs.aws.amazon.com/AmazonS3/latest/dev/… निष्पक्ष होने के लिए, बाल्टी संस्करण के आसपास की मुद्रा अस्पष्ट और कमी की ओर इशारा करती है ...
keen

@keen ध्यान दें कि इस प्रश्न का उत्तर लगभग तीन साल पहले दिया गया था ... यह बहुत संभव है कि उन्होंने प्रलेखन को अद्यतन किया। हालांकि अच्छा कैच।
नाथन सी

मुद्रा के लिए संदर्भित लिंक पुनर्प्राप्ति (सुपर उच्च स्तरीय पुनर्प्राप्ति दृश्य) के बारे में है और परिवर्तित नहीं हुआ है - और निष्पक्ष होने के लिए, यह थोड़ा भ्रामक से अधिक है जब यह हटाए जाने के बारे में बात करना शुरू कर देता है। बस यह सुनिश्चित करना चाहता था कि कोई भी इसे न देखे और यह सोचे कि "बस एक वर्जन s3 बकेट से किसी ऑब्जेक्ट को हटाने का मतलब है कि पुराना वर्जन वापस लौटना शुरू हो जाएगा" - ऐसा हो सकता है, लेकिन आपको विशेष रूप से करंट वर्जन को डिलीट करना होगा (... / key ? संस्करण = xyz) उस के लिए होने के लिए ...
उत्सुक

1

यहाँ एक आसान सा php स्क्रिप्ट है, जिसका उपयोग मैंने अपने बाल्टी को बैक अप बाल्टी के साथ संस्करण बनाने के लिए किया था:

संस्करण को चालू करने के साथ एक बाल्टी में वापस चलाने के लिए

#CONFIGURATION
export bucket_to_backup='example-of-a-bucket-name';
export backup_bucket='example-of-a-backup-bucket-name'; 
export AWS_ACCESS_KEY_ID=ASDFDSAFADSFDASF;
export AWS_SECRET_ACCESS_KEY=adsfdsaf86adsf5adsf568aadf75ads;
#you will need to download and install the s3cmd tool at the following url:
#http://s3tools.org/
s3cmd --access_key=$AWS_ACCESS_KEY_ID --secret_key=$AWS_SECRET_ACCESS_KEY --recursive sync s3://$bucket_to_backup s3://$backup_bucket;

इन दो टाइमस्टैम्प्स के बीच संस्करणित फ़ाइलों से बैकअप को पुनर्स्थापित करें

export startSnapShotTimeStamp=1427577934;
export endSnapShotTimeStamp=1427577939;
#do the restore with php script
php awsUtil.php sync example-of-a-backup-bucket-name example-of-a-bucket-name $startSnapShotTimeStamp-$endSnapShotTimeStamp

आप यहाँ PHP स्क्रिप्ट डाउनलोड कर सकते हैं: http://boulderapps.co/post/backing-up-and-restoring-s3-to-a-versioned-bucket

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.