अपडेट करें
जैसा कि अलबरगे (+1) द्वारा बताया गया है , आजकल उत्कृष्ट AWS कमांड लाइन इंटरफ़ेस, AWS (लगभग) सभी चीजों के साथ बातचीत करने के लिए सबसे बहुमुखी दृष्टिकोण प्रदान करता है - इस बीच यह अधिकांश सेवाओं के API को कवर करता है और आपके साथ काम करने के लिए उच्च स्तर S3 कमांड भी देता है। विशेष रूप से केस का उपयोग करें, S3 के लिए AWS CLI संदर्भ देखें :
- सिंक - सिंक निर्देशिका और S3 उपसर्ग। आपके उपयोग के मामले से आच्छादित है उदाहरण 2 (अधिक ठीक से उपयोग कणों
--exclude
, --include
और उपसर्ग आदि से निपटने में भी उपलब्ध है):
निम्नलिखित सिंक कमांड एक निर्दिष्ट उपसर्ग और बाल्टी के तहत वस्तुओं को एक और निर्दिष्ट उपसर्ग और बाल्टी के तहत वस्तुओं को s3 वस्तुओं की प्रतिलिपि बनाकर सिंक करता है। [...]
aws s3 sync s3://from_my_bucket s3://to_my_other_bucket
पूर्णता के लिए, मैं उल्लेख करूंगा कि S3api उप कमांड के माध्यम से निचले स्तर के S3 कमांड अभी भी उपलब्ध हैं , जो अंततः अपने उच्च स्तर की कार्यक्षमता को अपनाने से पहले AWS CLI पर किसी भी SDK आधारित समाधान का अनुवाद करने की अनुमति देगा।
प्रारंभिक उत्तर
S3 बाल्टियों के बीच चल रही फ़ाइलों को PUT ऑब्जेक्ट के माध्यम से प्राप्त किया जा सकता है - कॉपी एपीआई (इसके बाद DELETE ऑब्जेक्ट ):
PUT ऑपरेशन के इस कार्यान्वयन से एक ऑब्जेक्ट की प्रतिलिपि बनाई जाती है जो पहले से ही अमेज़ॅन S3 में संग्रहीत है। PUT कॉपी ऑपरेशन GET और फिर PUT प्रदर्शन करने के समान है। अनुरोध शीर्षलेख, x-amz-copy-source को जोड़कर, PUT ऑपरेशन को स्रोत वस्तु को गंतव्य बकेट में कॉपी करता है। स्रोत
सभी मौजूदा एडब्ल्यूएस एसडीके के लिए संबंधित नमूने उपलब्ध हैं, एक एकल ऑपरेशन में ऑब्जेक्ट को कॉपी करना देखें । स्वाभाविक रूप से, एक स्क्रिप्टिंग आधारित समाधान यहां स्पष्ट पहली पसंद होगी, इसलिए रूबी के लिए एडब्ल्यूएस एसडीके का उपयोग करते हुए एक ऑब्जेक्ट की प्रतिलिपि बनाएँ एक अच्छा प्रारंभिक बिंदु हो सकता है; यदि आप इसके बजाय पाइथन पसंद करते हैं, तो बोटो के माध्यम से भी प्राप्त किया जा सकता है , copy_key()
बोटो के एस 3 एपीआई प्रलेखन के भीतर विधि देखें ।
PUT Object
केवल फ़ाइलों की प्रतिलिपि बनाता है, इसलिए आपको DELETE Object
एक सफल प्रतिलिपि कार्रवाई के बाद भी किसी फ़ाइल को स्पष्ट रूप से हटाने की आवश्यकता होगी , लेकिन यह केवल एक और कुछ पंक्तियां होंगी, जब बाल्टी और फ़ाइल नामों को संभालने वाली समग्र स्क्रिप्ट मौजूद है (संबंधित उदाहरण भी हैं देखें, उदाहरण के लिए प्रति अनुरोध एक वस्तु को हटाना )।