2012-02-09 9 views
5

मुझे एक अमेज़ॅन एस 3 बाल्टी में '/ old/dir /' से '/ new/dir /' से सभी चाबियाँ कॉपी करने की आवश्यकता है। मैं इस स्क्रिप्ट (त्वरित हैक) के साथ आया था: अब यह काम कर रहा है के लिएबोटो के साथ एक अमेज़ॅन एस 3 बाल्टी में सभी फ़ाइलों को एक निर्देशिका से दूसरी निर्देशिका में कुशलता से कॉपी करने के लिए कैसे करें?

import boto 

s3 = boto.connect_s3() 
thebucket = s3.get_bucket("bucketname") 
keys = thebucket.list('/old/dir') 
for k in keys: 
    newkeyname = '/new/dir' + k.name.partition('/old/dir')[2] 
    print 'new key name:', newkeyname 
    thebucket.copy_key(newkeyname, k.bucket.name, k.name) 

लेकिन क्या मैं सिर्फ माउस के साथ/अतीत नकल द्वारा चित्रमय प्रबंधन कंसोल में मैन्युअल रूप से कर सकते हैं की तुलना में काफी धीमी है। बहुत निराशाजनक और प्रतिलिपि बनाने के लिए बहुत सी कुंजी हैं ...

क्या आपको कोई तेज विधि पता है? धन्यवाद।

संपादित करें: शायद मैं समवर्ती प्रति प्रक्रियाओं के साथ ऐसा कर सकता हूं। मैं बोटो कॉपी कुंजी विधियों से वास्तव में परिचित नहीं हूं और मैं कितनी समवर्ती प्रक्रियाओं को अमेज़ॅन को भेज सकता हूं।

संपादित 2: मैं वर्तमान में पाइथन मल्टीप्रोसेसिंग सीख रहा हूं। चलो देखते हैं कि मैं एक साथ 50 प्रतिलिपि संचालन भेज सकता हूं ...

संपादित करें 3: मैंने पाइथन मल्टीप्रोसेसिंग मॉड्यूल का उपयोग करके 30 समवर्ती प्रतिलिपि के साथ प्रयास किया। कॉपी कंसोल के भीतर और कम त्रुटि प्रवण के मुकाबले बहुत तेज थी। बड़ी फ़ाइलों (> 5 जीबी) के साथ एक नया मुद्दा है: बोटो एक अपवाद उठाता है। अद्यतन स्क्रिप्ट पोस्ट करने से पहले मुझे इसे डीबग करना होगा।

+0

क्या आपने किसी ऑब्जेक्ट को रीस्ट-कॉपी करने का प्रयास किया है (http://docs.amazonwebservices.com/AmazonS3/latest/API/ RESTObjectCOPY.html? r = 7426)? मैं इसे आज़मा दूंगा, शायद यह तेज़ है ... – Viccari

+0

मुझे आशा है कि बोटो पहले से ही इस एपीआई को कॉल कर रहा है, लेकिन मैंने – ascobol

+1

की जांच नहीं की है तो क्या मैं :) लेकिन मैंने कठिन तरीके से सीखा है कि यह जांच को चोट नहीं पहुंचाता है ... – Viccari

उत्तर

1

5 जीबी से अधिक फ़ाइलों के साथ आपकी समस्या के बारे में: एस 3 PUT विधि का उपयोग कर 5 जीबी से अधिक फ़ाइलों को अपलोड करने का समर्थन नहीं करता है, जो बोटो करने की कोशिश करता है (see boto source, Amazon S3 documentation)।

दुर्भाग्य से मुझे यकीन नहीं है कि आप इसे डाउनलोड करने और बहु-भाग अपलोड में फिर से अपलोड करने के अलावा इसे कैसे प्राप्त कर सकते हैं। मुझे नहीं लगता कि बोटो अभी तक एक बहु-भाग प्रतिलिपि ऑपरेशन का समर्थन करता है (यदि ऐसी कोई चीज़ भी मौजूद है)