2014-09-22 7 views
7

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

अमेज़ॅन एस 3 के मामले में, ऐसा लगता है कि केवल एलएस, सीपी, एमवी इत्यादि हैं commands मैं जानना चाहता था कि सीपी का उपयोग करके मेरी स्थानीय मशीन पर पूरी फाइल डाउनलोड किए बिना फ़ाइल का हिस्सा देखना संभव है या नहीं /प्राप्त।

उत्तर

5

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

मुझे नहीं पता कि विभिन्न सीएलआई उपकरण किस प्रकार इसका समर्थन करते हैं सीधे लेकिन एक श्रेणी पुनर्प्राप्ति जो आप चाहते हैं वह करता है।

एडब्ल्यूएस सीएलआई उपकरण ("एस 3 सीपी" सटीक होने के लिए) आपको रेंज पुनर्प्राप्ति करने की अनुमति नहीं देता है लेकिन s3curl (http://aws.amazon.com/code/128) चाल चलाना चाहिए। (तो सादा कर्ल, उदाहरण के लिए, --ेंज पैरामीटर का उपयोग करना लेकिन फिर आप अपने दम पर अनुरोध पर हस्ताक्षर करने के लिए होता है)

+1

विभिन्न एडब्ल्यूएस एसडीके का उपयोग करके इसे अपने आप कार्यान्वित करने के लिए http://docs.aws.amazon.com/AmazonS3/latest/dev/GettingObjectsUsingAPIs.html देखें। –

+0

धन्यवाद। मैं बस s3curl का उपयोग करेंगे। उपयोग केस हालांकि समर्थन के लिए पर्याप्त सामान्य लगता है। – nutsiepully

0

ऐसी कोई क्षमता नहीं है। आप केवल पूरी वस्तु को पुनर्प्राप्त कर सकते हैं। ऑब्जेक्ट मेटाडेटा देखने के लिए आप HTTP HEAD request कर सकते हैं, लेकिन यह वह नहीं है जिसे आप ढूंढ रहे हैं।

+0

धन्यवाद। हालांकि यह समझ में नहीं आता है। या मुझे लगता है कि यह सिर्फ अपने नेटवर्क बिलिंग में मदद करता है। – nutsiepully

+0

@ न्यूट्सपीली माइकल हनीश का जवाब मेरा से बेहतर है क्योंकि यह एक समाधान प्रदान करता है, आपको इसके बजाय उसे स्वीकार करना चाहिए! –

+0

बहुत सुंदर होने के लिए धन्यवाद। मैंने ऐसा करने के बारे में सोचा, लेकिन यह सुनिश्चित नहीं था :-) – nutsiepully

16

एक बात तुम कर सकते हो वस्तु सीपी सिर करने के लिए पाइप यह है मोटा करने के लिए और उसके बाद:।

aws s3 cp s3://path/to/my/object - | head 

आप एक टूटी हुई पाइप त्रुटि मिलती है अंत में लेकिन यह काम करता है।

+3

यह उत्कृष्ट है! – Yavar

5

आप range का उपयोग s3api get-object कमांड पर स्विच कर सकते हैं ताकि एस 3 ऑब्जेक्ट के पहले बाइट्स को वापस लाया जा सके। (AFAICT s3 स्विच का समर्थन नहीं करता।)

पाइप \dev\stdout लक्ष्य फ़ाइल नाम के रूप में पारित किया जा सकता है, तो आप बस head लिए पाइपिंग द्वारा S3 वस्तु को देखना चाहते। यहाँ एक उदाहरण है:

aws s3api get-object --bucket mybucket_name --key path/to/the/file.log.gz --range bytes=0-10000 /dev/stdout | zless :

aws s3api get-object --bucket mybucket_name --key path/to/the/file.log --range bytes=0-10000 /dev/stdout | head

अंत में, यदि मेरे जैसे आप संकुचित .gz फाइलों के साथ काम कर रहे हैं, इसके बाद के संस्करण तकनीक भी zless साथ decompressed फ़ाइल के सिर को देखने के लिए आप को सक्षम करने के काम करता है

zless के साथ एक टिप: यदि यह काम नहीं कर रहा है तो सीमा के आकार को बढ़ाने का प्रयास करें।

2

आप पूरी फ़ाइल डाउनलोड करने के लिए नहीं करना चाहते हैं, तो आप --range विकल्प aws s3api आदेश में और बाद फ़ाइल भाग डाउनलोड किया जाता है निर्दिष्ट के साथ के एक हिस्से को डाउनलोड कर सकते हैं, तो उस फ़ाइल पर एक head आदेश चला।

उदाहरण:

aws s3api get-object --bucket my_s3_bucket --key s3_folder/file.txt --range bytes=0-1000000 tmp_file.txt && head tmp_file.txt 

स्पष्टीकरण:

aws s3api get-object एक निर्दिष्ट आउटपुट फ़ाइल के लिए --range में एक निर्दिष्ट आकार के साथ निर्दिष्ट बाल्टी और S3 फ़ोल्डर से S3 फ़ाइल के एक हिस्से को डाउनलोड करता है। && केवल दूसरा आदेश निष्पादित करता है यदि पहला व्यक्ति सफल हुआ हो। दूसरा आदेश पहले बनाई गई आउटपुट फ़ाइल की 10 पहली पंक्ति मुद्रित करता है।

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