जवाबों:
अमेज़न S3 के दस्तावेज़ के अनुसार :
एक बार हटाए जाने के बाद, किसी ऑब्जेक्ट को पुनर्स्थापित करने या हटाना रद्द करने का कोई तरीका नहीं है।
यदि आपके पास संस्करण सक्षम है, तो आप कर सकते हैं! एक वर्जन बकेट पर, एक फाइल पर डिलीट एक्शन वास्तव में इसे डिलीट नहीं करता है, लेकिन यह "डिलीट मार्कर" के साथ एक वर्जन जोड़ता है। आप AWS CLI के साथ डिलीट मार्कर को हटा सकते हैं:
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
आप बाल्टी में सभी फाइलें प्राप्त कर सकते हैं
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
यदि आप बाल्टी में मौजूद सभी फाइलों को हटाना चाहते हैं, तो आप कोशिश कर सकते हैं:
echo '#!/bin/bash' > undeleteScript.sh && aws --output text s3api list-object-versions --bucket yourbucket-name | grep -E "^DELETEMARKERS" | awk '{FS = "[\t]+"; print "aws s3api delete-object --bucket yourbucket-name --key \42"$3"\42 --version-id "$5";"}' >> undeleteScript.sh && . undeleteScript.sh; rm -f undeleteScript.sh;
--output=text
यदि आप इसे काम करना चाहते हैं तो जोड़ना होगा । वह मान रहा है कि आप .Txt फ़ाइल और नहीं .JSON फ़ाइल के माध्यम से अपने AWS कमांड को आउटपुट कर रहे हैं।
इस प्रश्न को अपडेट करने के रूप में मैं उत्तर की तलाश में था:
अब आप S3 बाल्टी में VERSIONING जोड़ सकते हैं। यह S3 विलोपन के बाद भी किसी ऑब्जेक्ट के संस्करणों को रखने का कारण होगा। पूर्ण प्रलेखन: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
अब आप AWS कंसोल का उपयोग करके ऑब्जेक्ट संस्करणों को सूचीबद्ध कर सकते हैं: http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
यदि आपके पास सही अनुमतियां हैं, तो आप हटाए गए मार्कर (हटाए गए ऑब्जेक्ट का नवीनतम संस्करण) को हटा सकते हैं और इसका परिणाम यह होगा कि ऑब्जेक्ट फिर से उपलब्ध है।