2009-03-31 20 views
9

तो मुझे पता है कि यह एक आम सवाल है लेकिन इसके लिए कोई अच्छा जवाब नहीं लगता है।मैं एस 3 बाल्टी में वस्तुओं को कैसे हटा/गिन सकता हूं?

मेरे पास गोब्स के साथ एक बाल्टी है (मुझे कोई संकेत नहीं है कि उनमें कितनी फाइलें हैं)। वे सभी एक टुकड़े के भीतर हैं।

1) मैं कैसे पता लगा सकता हूं कि इनमें से कितनी फाइलें हैं लिस्टिंग के बिना? मैंने s3cmd.rb, aws/s3, और jets3t सामग्री का उपयोग किया है और सबसे अच्छा मैं पाया जा सकता है कि पहले 1000 रिकॉर्ड (वास्तव में उन पर GETS प्रदर्शन कर रहा है) को गिनने का आदेश है।

मैं जेट्स 3t के एप्लेट का उपयोग कर रहा हूं और साथ ही साथ काम करना वाकई अच्छा लगा है, लेकिन यहां तक ​​कि मैं अपनी सभी वस्तुओं को सूचीबद्ध नहीं कर सकता क्योंकि मैं ढेर की जगह से बाहर निकलता हूं। (संभवतः यह उन सभी पर GETS को छेड़छाड़ कर रहा है और उन्हें स्मृति में रख रहा है)

2) मैं बस एक बाल्टी कैसे हटा सकता हूं? मैंने जो सबसे अच्छी चीज देखी है वह समानांतर डिलीट लूप है और इसमें समस्याएं होती हैं कभी-कभी यह एक ही फ़ाइल को हटाने का प्रयास करती है। यह सब 'हटाना' आदेश है जो मैंने पूरा किया है।

आप लोग क्या करते हैं जिन्होंने लाखों छवियों/txts की मेजबानी के बारे में दावा किया है ?? क्या होता है जब आप इसे हटाना चाहते हैं?

3) आखिरकार, क्या इसके वैकल्पिक जवाब हैं? इन सभी फ़ाइलों में txt/xml फ़ाइलें हैं इसलिए मुझे यह भी यकीन नहीं है कि S3 ऐसी चिंता है - शायद मुझे इसे किसी दस्तावेज़ डेटाबेस में ले जाना चाहिए ??

यह क्या उबलता है कि अमेज़ॅन एस 3 एपीआई सिर्फ 2 बहुत ही महत्वपूर्ण संचालन - COUNT और DEL_BUCKET गायब है। (वास्तव में एक डिलीट बाल्टी कमांड होता है लेकिन यह केवल तब काम करता है जब बाल्टी खाली होती है) अगर कोई ऐसी विधि के साथ आता है जो इन दो परिचालनों को करने के लिए चूसता नहीं है तो मैं खुशी से बहुत सारी बक्षीस छोड़ दूंगा।

अद्यतन

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

अद्यतन

इस घर चट्टानों!

http://github.com/SFEley/s3nuke/

मैं rm'd मिनट के भीतर 1-2k फ़ाइलों के लायक एक अच्छी जोड़ी gigs।

उत्तर

1

मैं निश्चित रूप से उन लोगों में से एक नहीं हूं जिन्होंने लाखों छवियों/txts को होस्ट करने के बारे में दावा किया है, क्योंकि मेरे पास केवल कुछ हज़ार हैं, और यह वह उत्तर नहीं हो सकता है जिसे आप ढूंढ रहे हैं, लेकिन मैंने देखा कुछ समय पहले।

मुझे जो याद है, उससे एक एपीआई कमांड होता है जिसे हेड कहा जाता है जो पूर्ण वस्तु को पुनः प्राप्त करने के बजाय ऑब्जेक्ट के बारे में जानकारी प्राप्त करता है जो कि जीईटी करता है, जो ऑब्जेक्ट्स को गिनने में मदद कर सकता है।

जब तक मैं देख रहा था, बाल्टी को हटाने के लिए, एपीआई ने निश्चित रूप से कहा था कि बाल्टी खाली होनी चाहिए, इसलिए आपको पहले सभी ऑब्जेक्ट्स को हटाना होगा।

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

अपने मामले में, बाल्टी एक्सप्लोरर के साथ, आप बाल्टी पर राइट क्लिक कर सकते हैं और हटाएं या राइट क्लिक करें और गुणों का चयन करें और यह ऑब्जेक्ट्स की संख्या और गिनती करेगा वे आकार लेते हैं। यह निश्चित रूप से पूरी वस्तु डाउनलोड नहीं करता है। (जैसे आखिरी बाल्टी मैंने देखा कि यह 12 जीबी और लगभग 500 फाइलें थी और 12 जीबी डाउनलोड करने में घंटों लगेंगे जबकि आकार और गिनती एक या दो में वापस आ जाएगी)। और यदि कोई सीमा है, तो यह निश्चित रूप से 1000 नहीं है।

आशा है कि इससे मदद मिलती है।

0

1) अपने पहले प्रश्न के बारे में, आप वास्तव में उन्हें पुनर्प्राप्त किए बिना बाल्टी पर आइटम सूचीबद्ध कर सकते हैं। आप SOAP और REST एपीआई दोनों के साथ ऐसा कर सकते हैं। जैसा कि आप देख सकते हैं, आप सूची में अधिकतम संख्या और सूची (मार्कर) से सूची शुरू करने की स्थिति को परिभाषित कर सकते हैं। इसके बारे में here और पढ़ें।

मुझे पेजिंग के किसी भी कार्यान्वयन के बारे में पता नहीं है, लेकिन विशेष रूप से आरईएसटी इंटरफेस के लिए इसे किसी भी भाषा में लागू करना बहुत आसान होगा।

2) मेरा मानना ​​है कि बाल्टी को हटाने का एकमात्र तरीका यह है कि पहले इसे सभी वस्तुओं से खाली करें। यह question अन्य देखें।

3) मैं कहूंगा कि एस 3 बड़ी संख्या में फाइलों को संग्रहित करने के लिए बहुत उपयुक्त है। यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। क्या आप बाइनरी फाइलों को स्टोर करने की योजना बना रहे हैं? क्या आपको कोई प्रश्न करने की ज़रूरत है या सिर्फ फाइलों को सूचीबद्ध करना पर्याप्त है?

+0

यहां तक ​​कि 1000 बार या जो भी संख्या थी, को चाबियाँ सूचीबद्ध करना - जो हमेशा के लिए लिया जाता था - एक दोपहर से भी ज्यादा और अंत में मैंने ऊबने के बाद इसे मार दिया और यह देखते हुए कि मेरा ढेर रास्ता बहुत अधिक था। – eyberg

+0

मुझे नहीं लगता कि आइटम की संख्या प्राप्त करने के लिए एक एपीआई कॉल है। शायद आपने एक उपकरण का उपयोग किया है जो फाइलों की सामग्री भी प्राप्त करता है - यही कारण है कि इसमें इतना समय लगा। जीईटी बाल्टी अनुरोध भेजने के लिए बस फिडलर या कुछ अन्य टूल का उपयोग करें (मेरे उत्तर में आरईएसटी एपीआई लिंक देखें)। एक्सएमएल वापस पाने में लंबा समय नहीं लगना चाहिए। मुझे डर है कि मेरे पास यह परीक्षण करने के लिए इतनी बड़ी बाल्टी नहीं है। – kgiannakakis

1

"सूची" डेटा पुनर्प्राप्त नहीं करेगा। मैं s3cmd (एक अजगर स्क्रिप्ट) का उपयोग करें और मैं कुछ इस तरह किया होता:

s3cmd ls s3://foo | awk '{print $4}' | split -a 5 -l 10000 bucketfiles_ 
for i in bucketfiles_*; do xargs -n 1 s3cmd rm < $i & done 

लेकिन पहले की जाँच आप कितने bucketfiles_ फ़ाइलों मिलता है। प्रति फ़ाइल एक s3cmd चल रहा होगा।

इसमें कुछ समय लगेगा, लेकिन दिन नहीं।

+0

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

+0

s3cmd del 's3cmd ls s3: // Mybigbucket/somepattern | अजीब '{प्रिंट $ 4}' '। हाँ यह दर्दनाक है – BozoJoe

0

मुझे एक बाल्टी से सैकड़ों हजारों फ़ाइलों को हटाने के साथ एक ही समस्या है। समांतर हटाने को चलाने के लिए ईसी 2 इंस्टेंस को आग लगाना फायदेमंद हो सकता है क्योंकि एस 3 की विलम्ब कम है। मुझे लगता है कि ईसी 2 सर्वरों का एक गुच्छा होस्ट करने और लोगों को जल्दी से बाल्टी हटाने के लिए चार्ज करने के लिए कुछ पैसे हैं। (कम से कम जब तक अमेज़ॅन एपीआई को बदलने के लिए न हो जाए)

0

पुराना धागा, लेकिन अभी भी प्रासंगिक है क्योंकि जब तक मैं इसे अभी समझ नहीं पाया तब तक मैं उत्तर की तलाश में था। मैं एक जीयूआई-आधारित उपकरण (यानी कोई कोड नहीं) का उपयोग कर फ़ाइल गिनती चाहता था। मैं पहले से ही S3 से ड्रैग & ड्रॉप ट्रांसफर के लिए 3Hub नामक टूल का उपयोग करना चाहता हूं। मैं जानना चाहता था कि में एक विशेष बाल्टी में मुझे कितनी फाइलें थीं (मुझे नहीं लगता कि बिलिंग बाल्टी द्वारा इसे तोड़ देती है)।

So, using 3Hub, 
- list the contents of the bucket (looks basically like a finder or explorer window) 
- go to the bottom of the list, click 'show all' 
- select all (ctrl+a) 
- choose copy URLs from right-click menu 
- paste the list into a text file (I use TextWrangler for Mac) 
- look at the line count 

मैं बाल्टी में 20,521 फ़ाइलें था और एक मिनट से कम में फ़ाइल संख्या किया था।

मैं जानना चाहता हूं कि किसी को बेहतर तरीका मिला है क्योंकि इसमें सैकड़ों हजारों फ़ाइलों पर कुछ समय लगेगा।

0

एक S3 बाल्टी में वस्तुओं की गिनती करने के लिए:

जाओ एडब्ल्यूएस के लिए बिलिंग, तो रिपोर्ट करती है, तो एडब्ल्यूएस उपयोग रिपोर्ट। अमेज़ॅन सरल संग्रहण सेवा, फिर ऑपरेशन मानक स्टोरेज का चयन करें। एक CSV फ़ाइल डाउनलोड करें जिसमें StorageObjectCount का उपयोग प्रकार शामिल है जो प्रत्येक बाल्टी के लिए आइटम गणना सूचीबद्ध करता है।

+0

गिनने का दूसरा तरीका कहां है? – Volte

संबंधित मुद्दे