एक पूरी S3 बाल्टी डाउनलोड कर रहा है?


705

मैंने देखा कि AWS प्रबंधन कंसोल से संपूर्ण S3 बाल्टी को डाउनलोड करने का विकल्प प्रतीत नहीं होता है।

क्या मेरी बाल्टी में सब कुछ हड़पने का एक आसान तरीका है? मैं रूट फ़ोल्डर को सार्वजनिक करने के बारे में सोच रहा था, wgetयह सब हड़पने के लिए उपयोग कर रहा था , और फिर इसे फिर से निजी बना रहा था लेकिन मुझे नहीं पता कि क्या कोई आसान तरीका है।


4
जैसा कि यहां कई लोगों ने कहा, aws s3 syncसबसे अच्छा है। लेकिन किसी ने एक शक्तिशाली विकल्प नहीं बताया dryrun:। यह विकल्प आपको यह देखने की अनुमति देता है कि जब आप उपयोग कर रहे हैं तो / से s3 में क्या डाउनलोड / अपलोड किया जाएगा sync। जब आप अपने स्थानीय या किसी s3 बाल्टी में सामग्री को अधिलेखित नहीं करना चाहते हैं तो यह वास्तव में उपयोगी है। इस तरह से इसका उपयोग किया जाता है: aws s3 sync <source> <destination> --dryrunअवांछनीय परिवर्तनों को अपलोड न करने के लिए मैंने नई सामग्री को बाल्टी में धकेलने से पहले हर समय इसका उपयोग किया।
पेरिमोश

जवाबों:


1334

AWS सीएलआई

अधिक जानकारी के लिए " AWS CLI कमांड संदर्भ " देखें।

AWS ने हाल ही में अपने कमांड लाइन टूल्स को जारी किया, जो कि बोटो की तरह काम करते हैं और इन्हें इस्तेमाल करके इंस्टॉल किया जा सकता है

sudo easy_install awscli

या

sudo pip install awscli

एक बार स्थापित होने के बाद, आप बस चला सकते हैं:

aws s3 sync s3://<source_bucket> <local_destination>

उदाहरण के लिए:

aws s3 sync s3://mybucket .

mybucketवर्तमान निर्देशिका में सभी वस्तुओं को डाउनलोड करेगा ।

और उत्पादन होगा:

download: s3://mybucket/test.txt to test.txt
download: s3://mybucket/test2.txt to test2.txt

यह एक-तरफ़ा सिंक का उपयोग करके आपकी सभी फ़ाइलों को डाउनलोड करेगा। यह होगा नहीं है जब तक कि आपके द्वारा निर्दिष्ट अपने वर्तमान निर्देशिका में किसी भी मौजूदा फ़ाइलों को हटाने , और यह S3 पर किसी भी फाइल को बदलना या हटाना नहीं होंगे। --delete

आप S3 बाल्टी को S3 बाल्टी, या S3 बाल्टी सिंक को स्थानीय भी कर सकते हैं।

की जाँच करें दस्तावेज और अन्य उदाहरण

जबकि ऊपर का उदाहरण है कि फुल बकेट को कैसे डाउनलोड किया जाता है, आप एक फोल्डर को पुन: प्रदर्शन करके डाउनलोड कर सकते हैं

aws s3 cp s3://BUCKETNAME/PATH/TO/FOLDER LocalFolderName --recursive

यह CLI को निर्देश देगा कि सभी फ़ाइलों और फ़ोल्डर कुंजियों PATH/TO/FOLDERको BUCKETNAMEबाल्टी के भीतर निर्देशिका में पुनरावर्ती रूप से डाउनलोड करें ।


223
पहले दौड़ें aws configureऔर अपना जोड़ें access keyऔर secret access keyजो यहां पाया जा सकता है
इरविन रूइजाक्कर्स

12
विंडोज़ इंस्टॉलर aws.amazon.com/cli के लिए यहां जाएं । यह पर्यावरण चर "AWS_ACCESS_KEY_ID" से पहुंच कुंजी और "AWS_SECRET_ACCESS_KEY" से आपकी मुख्य कुंजी उठाता है।
मैट बॉन्ड

7
मैंने कोशिश की है s3cmdऔर Cyberduck, लेकिन मेरे लिए awscliमेरी बाल्टी से ~ 70.000 फाइलें डाउनलोड करने का सबसे तेज़ तरीका था।
आरजेन

11
कृपया ध्यान दें कि प्रश्न केवल डाउनलोड के बारे में पूछे जाने पर, मेरा मानना ​​है कि यह आदेश आपकी निर्देशिका और S3 के बीच 2-तरफ़ा सिंक करेगा। यदि आप कुछ भी अपलोड करने का प्रयास नहीं कर रहे हैं, तो सुनिश्चित करें कि वर्तमान निर्देशिका खाली है।
जेसी क्रॉसेन

15
@JesseCrossen वह aws s3 syncआदेश कुछ भी अपलोड नहीं करेगा, लेकिन यह S3 पर मौजूद नहीं होने पर स्थानीय रूप से फ़ाइलों को हटा देगा। दस्तावेज देखें ।
फ्लिमल

168

आप s3cmdअपनी बाल्टी डाउनलोड करने के लिए उपयोग कर सकते हैं :

s3cmd --configure
s3cmd sync s3://bucketnamehere/folder /destination/folder

एक और उपकरण है जिसे आप कॉल कर सकते हैं rclone। यह Rclone प्रलेखन में एक कोड नमूना है:

rclone sync /home/local/directory remote:bucket

5
यह काफी धीमा है। खासकर यदि आप इसे वृद्धिशील रूप से उपयोग करने का प्रयास करते हैं। क्या कोई समाधान है जो बहु-थ्रेडेड है ताकि यह बैंडविड्थ को संतृप्त कर सके?
पीटर लाडा

नीचे दिए गए समाधान बेहतर, अधिक मानक और अधिक प्लेटफार्मों के लिए खुले हैं
abc123

यह आवश्यक भुगतान के लिए काम नहीं करता है बाल्टियाँ (देखें arxiv.org/help/bulk_data_s3 ) :-(
मार्टिन थोमा

अगर मुझे डाउनलोड करने के लिए पैटर्न मिलान करना है तो मैं आपके समाधान का उपयोग कैसे कर सकता हूं? मेरा सवाल: stackoverflow.com/questions/25086722/…
श्रीकांत काकानी

84

मैंने Amazon S3 डेटा को स्थानीय मशीन में कॉपी करने के लिए कुछ अलग तरीकों का उपयोग किया है, जिसमें शामिल है s3cmd, और अब तक सबसे आसान है Cyberduck

आपको बस अपने अमेज़ॅन क्रेडेंशियल दर्ज करने और अपने किसी भी बकेट, फ़ोल्डर या फ़ाइलों को डाउनलोड, अपलोड, सिंक करने के लिए सरल इंटरफ़ेस का उपयोग करना होगा।

स्क्रीनशॉट


बहुत अच्छा काम करता है! विंडोज और मैक (GPL) के लिए उपलब्ध है।
16

Cyberduck को गुमनाम रूप से सार्वजनिक फ़ाइलों को डाउनलोड करना आसान बनाता है - s3cmd को क्रेडेंशियल्स की आवश्यकता प्रतीत होती है
chrishiestand

ट्रांसमिट के साथ भी बढ़िया काम करता है।
अंडरस्टैंडिंग

सीएलआई मुझे एक त्रुटि दे रहा था जब मैं अपनी बाल्टी को बचाने की कोशिश कर रहा था, यह पूरी तरह से काम करता था!
लजार कुकोलज

ओह, जो अप्रत्याशित आया। मैंने पहले एफ़टीपी के लिए साइबरबक का उपयोग किया था, लेकिन कभी भी एस 3 कनेक्टिविटी होने की उम्मीद नहीं की थी। एक महान संकेत के लिए धन्यवाद!
jskierbi

51

आपके पास ऐसा करने के लिए कई विकल्प हैं, लेकिन सबसे अच्छा AWS CLI का उपयोग कर रहा है।

यहाँ एक चलना है:

  1. अपनी मशीन में AWS CLI डाउनलोड और इंस्टॉल करें:

  2. AWS CLI कॉन्फ़िगर करें:

    यहां छवि विवरण दर्ज करें

    सुनिश्चित करें कि आप मान्य एक्सेस और गुप्त कुंजी इनपुट करते हैं , जो आपने खाता बनाते समय प्राप्त की थी।

  3. S3 बाल्टी का उपयोग करके सिंक करें:

    aws s3 sync s3://yourbucket /local/path
    

    उपरोक्त आदेश में, निम्नलिखित फ़ील्ड बदलें:

    • yourbucket >> आपका S3 बाल्टी जिसे आप डाउनलोड करना चाहते हैं।
    • /local/path >> अपने स्थानीय सिस्टम में पथ जहाँ आप सभी फ़ाइलों को डाउनलोड करना चाहते हैं।

मैंने साइबरबक के बजाय इसका उपयोग किया, क्योंकि साइबरडक को डाउनलोड शुरू होने से पहले फाइलों को "तैयार" करने की जरूरत है। बड़ी मात्रा में फ़ाइलों के लिए जो उम्र लगती थी और मुझे इस बात की जानकारी नहीं थी कि वास्तव में "तैयारी" क्या होती है। सीएलआई ने तुरंत डाउनलोड करना शुरू किया
ताशो

सुनिश्चित करें कि आपके पास s3://बाल्टी नाम में उपसर्ग है !!! आपके साथ aws s3 lsउस s3://उपसर्ग की आवश्यकता नहीं है, लेकिन आपको cpकमांड की आवश्यकता है ।
cjmling

43

AWS S3 CLI का उपयोग करने के लिए:

aws s3 cp s3://WholeBucket LocalFolder --recursive
aws s3 cp s3://Bucket/Folder LocalFolder --recursive

कोड का उपयोग कर डाउनलोड करने के लिए, AWS एसडीके का उपयोग करें।

GUI का उपयोग करने के लिए, Cyberduck का उपयोग करें।


1
कुछ फ़ाइलों या फ़ोल्डर को कैसे अनदेखा करें?
नबिन

1
@ नोट आप कुछ फ़ाइल या फ़ोल्डर को बाहर करने के लिए वाइल्डकार्ड के साथ --include और --exclude का उपयोग कर सकते हैं, जैसे: aws s3 cp s3://my-bucket-name ./local-folder --recursive --include "*" --exclude "excludeFolder/*" --exclude "includeFolder/excludeFile.txt"
DarkCenobyte

21

विंडोज के लिए, एस 3 ब्राउज़र सबसे आसान तरीका है जो मैंने पाया है। यह उत्कृष्ट सॉफ्टवेयर है, और यह गैर-व्यावसायिक उपयोग के लिए मुफ़्त है।


3
मैंने सिर्फ "डाउनलोड ऑल फाइल्स टू ..." विकल्प की कोशिश की (जो मुझे लगता है कि "डाउनलोड s3 बाल्टी के बराबर है" और इसने कहा कि मुझे प्रो संस्करण की आवश्यकता है।
जैक उलेजा

2
अपडेट: लेकिन मैं बाल्टी के भीतर एक संपूर्ण फ़ोल्डर डाउनलोड करने में सक्षम था जो मेरी आवश्यकताओं के लिए पर्याप्त था ...
जैक उलेजा

हाँ मुफ्त संस्करण बहुत सीमित है, आप सभी का चयन कर सकते हैं, और डाउनलोड कर सकते हैं, लेकिन केवल 2 एक साथ स्थानान्तरण के लिए सीमित है
हेडन थ्रिंग

Ubuntu 17.1 और s3cmd पर कुछ python3 समर्थन त्रुटि प्राप्त करने के बाद एक विंडोज़ सरल संस्करण की तलाश में था, यह अच्छी तरह से काम करता था।
एडेंकॉर्बिन

21

यदि आप Visual Studio का उपयोग करते हैं, तो " AWS Toolkit for Visual Studio " डाउनलोड करें।

स्थापित होने के बाद, विज़ुअल स्टूडियो - एडब्ल्यूएस एक्सप्लोरर - एस 3 - आपकी बाल्टी - डबल क्लिक पर जाएं

खिड़की में आप सभी फ़ाइलों का चयन करने में सक्षम होंगे। राइट क्लिक करें और फ़ाइलें डाउनलोड करें।



12

एक अन्य विकल्प जो कुछ OS X उपयोगकर्ताओं की मदद कर सकता है वह है Transmit।

यह एक एफ़टीपी प्रोग्राम है जो आपको अपनी S3 फ़ाइलों से कनेक्ट करने देता है। और, इसमें फाइंडर में फ़ोल्डर के रूप में किसी भी एफ़टीपी या एस 3 स्टोरेज को माउंट करने का विकल्प है, लेकिन यह केवल एक सीमित समय के लिए है।


12

@ लाइक का जवाब अच्छा है, लेकिन अगर आपके पास एक टन डेटा है और हमेशा के लिए इंतजार नहीं करना चाहते हैं, तो आपको " AWS CLI S3 कॉन्फ़िगरेशन " पढ़ना चाहिए ।

निम्नलिखित कमांड एडब्ल्यूएस सीएलआई को नौकरियों को निष्पादित करने के लिए 1,000 थ्रेड्स (प्रत्येक छोटी फ़ाइल या मल्टीपार्ट कॉपी का एक हिस्सा) का उपयोग करने के लिए कहेंगे और आगे 100,000 नौकरियों को देखेंगे:

aws configure set default.s3.max_concurrent_requests 1000
aws configure set default.s3.max_queue_size 100000

इन्हें चलाने के बाद, आप साधारण syncकमांड का उपयोग कर सकते हैं :

aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path

या

aws s3 sync s3://source-bucket/source-path c:\my\local\data\path

सीपीयू 4 कोर और 16 जीबी रैम के साथ एक सिस्टम पर, मेरा (3-50 जीबी फाइलें) जैसे मामलों के लिए सिंक / कॉपी स्पीड लगभग 9.5MiB / s से 700 + MiB / s तक चली गई, डिफ़ॉल्ट कॉन्फ़िगरेशन पर 70x की गति में वृद्धि।


1
यह असली जवाब है। बस इसे परीक्षण किया, ec2 से यह लगभग 2.3GB / मिनट स्थानांतरित कर दिया। 1GB / मिनट के बारे में समवर्ती विकल्प के बिना। जीवन रक्षक की।
कार्स्टन

9

मैंने S3 के लिए थोड़ा विकास किया है और मुझे पूरी बाल्टी डाउनलोड करने का सरल तरीका नहीं मिला है।

यदि आप जावा में कोड करना चाहते हैं तो जेट 3 लिब का उपयोग बाल्टी की सूची बनाने के लिए करना आसान है और उन्हें डाउनलोड करने के लिए उस सूची पर पुनरावृति करना चाहिए।

सबसे पहले, AWS प्रबंधन वाणिज्य दूतावास से एक सार्वजनिक निजी कुंजी प्राप्त करें ताकि आप S3service ऑब्जेक्ट बना सकें:

AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey);
s3Service = new RestS3Service(awsCredentials);

फिर, अपने बाल्टी वस्तुओं की एक सरणी प्राप्त करें:

S3Object[] objects = s3Service.listObjects(YourBucketNameString);

अंत में, एक बार में ऑब्जेक्ट को एक साथ डाउनलोड करने के लिए उस सरणी पर पुनरावृति करें:

S3Object obj = s3Service.getObject(bucket, fileName);
            file = obj.getDataInputStream();

मैंने कनेक्शन कोड को एक थ्रेडसेफ़ सिंगलटन में रखा है। स्पष्ट कारणों के लिए आवश्यक कोशिश / कैच सिंटैक्स को छोड़ दिया गया है।

यदि आप Python में कोड चाहते हैं तो आप इसके बजाय Boto का उपयोग कर सकते हैं।

बकेट एक्स्प्लोरर के चारों ओर देखने के बाद, " पूरी बाल्टी को डाउनलोड करना" वह कर सकता है जो आप चाहते हैं।


जब तक आपको जावा समाधान की आवश्यकता न हो, ऊपर aws cli उत्तर का उपयोग करें।
jeremyjjbrown

एक नया फ़ोल्डर बनाएँ और उसी तरह
Jisson

7

AWS sdk API केवल संपूर्ण फ़ोल्डर को अपलोड करने और s3 के लिए रेपो और स्थानीय स्तर पर s3 के पूरे बकेट को डाउनलोड करने के लिए सबसे अच्छा विकल्प होगा।

पूरे फोल्डर को s3 में अपलोड करने के लिए

aws s3 sync . s3://BucketName

स्थानीय रूप से पूरे s3 बाल्टी को डाउनलोड करने के लिए

aws s3 sync s3://BucketName . 

आप भी डाउनलोड करने के लिए s3 में विशेष फ़ोल्डर के लिए BucketName / Path की तरह पथ असाइन कर सकते हैं


6

आप इसे https://github.com/minio/mc के साथ कर सकते हैं :

mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir

mc भी सत्र, फिर से डाउनलोड करने, अपलोड और कई और अधिक का समर्थन करता है। mcलिनक्स, ओएस एक्स और विंडोज ऑपरेटिंग सिस्टम का समर्थन करता है। गोलंग में लिखा गया और अपाचे संस्करण 2.0 के तहत जारी किया गया।


5

यदि आप S3Fox के साथ फ़ायरफ़ॉक्स का उपयोग करते हैं, तो वह आपको सभी फ़ाइलों का चयन करने देता है (शिफ़्ट-पहले और अंतिम का चयन करें) और राइट-क्लिक करें और सभी डाउनलोड करें ... मैंने इसे 500+ फ़ाइलों w / o समस्या के साथ किया है


यह एक बकेट के भीतर सबफ़ोल्डर्स के लिए काम नहीं करता है, भले ही "छद्म फ़ोल्डर" AWS कंसोल में बनाए गए हों। (इस टिप्पणी के लेखन के रूप में)
वेस्ले

काम नहीं करने की पुष्टि की, मेरे पास लगभग 12k शीर्ष-स्तरीय कुंजियाँ (सबफ़ोल्डर्स) हैं, S3Fox भी शुरू नहीं होता है। इसके अलावा सभी बाल्टी को सूचीबद्ध करने की अनुमति पर जोर दें!
पीटर लाडा


3

यदि आपके पास केवल फाइलें हैं (कोई उपनिर्देशिका नहीं) तो एक त्वरित समाधान सभी फाइलों ( clickपहले Shift+clickपर, आखिरी पर) का चयन करना है और हिट Enterया right clickचयन करना है Open। अधिकांश डेटा फ़ाइलों के लिए यह उन्हें सीधे आपके कंप्यूटर पर डाउनलोड करेगा।


3

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

चूंकि यह सुरक्षा के माध्यम से नए सॉफ़्टवेयर को साफ़ करने के लिए एक चुनौती हो सकती है और WinSCP काफी प्रचलित है, इसलिए अधिक विशिष्ट उपयोगिता को स्थापित करने की कोशिश करने के बजाय इसका उपयोग करना वास्तव में फायदेमंद हो सकता है।


1
  1. विंडोज उपयोगकर्ता को इस लिंक से S3EXPLORER डाउनलोड करने की आवश्यकता है जिसमें इंस्टॉलेशन निर्देश भी हैं: - http://s3browser.com/dr.nx

  2. फिर आपको S3explorer के लिए secretkey, accesskey और क्षेत्र जैसे AWS क्रेडेंशियल प्रदान करें, इस लिंक में s3explorer के लिए कॉन्फ़िगरेशन निर्देश है: कॉपी पेस्ट लिंक इन ब्रॉयर: s3browser.com/s3browser-first-run.aspx

  3. अब आपके सभी s3 बकेट s3explorer के बाएँ पैनल पर दिखाई देंगे।

  4. बस बाल्टी का चयन करें, और ऊपरी बाएँ कोने पर बाल्टी मेनू पर क्लिक करें, फिर मेनू से विकल्प के लिए सभी फ़ाइलों को डाउनलोड करें चुनें। नीचे उसी के लिए स्क्रीनशॉट है:

बाल्टी चयन स्क्रीन

  1. फिर एक विशेष स्थान पर बाल्टी डाउनलोड करने के लिए एक फ़ोल्डर ब्राउज़ करें

  2. OK पर क्लिक करें और आपका डाउनलोड शुरू हो जाएगा।


1

aws सिंक सही समाधान है। यह एक दो तरह से नहीं करता है .. यह स्रोत से गंतव्य तक का एक रास्ता है। इसके अलावा, यदि आपके पास बाल्टी में बहुत सारी चीजें हैं, तो यह एक अच्छा विचार होगा कि पहले s3 एंडपॉइंट बनाएं ताकि डाउनलोड तेजी से हो (क्योंकि डाउनलोड इंटरनेट के माध्यम से नहीं, बल्कि इंट्रानेट के माध्यम से होता है) और कोई शुल्क नहीं


1

यहां सभी बाल्टियों को डाउनलोड करने, उनकी सूची बनाने, उनकी सामग्री को सूचीबद्ध करने के लिए कुछ सामान दिए गए हैं।

    //connection string
    private static void dBConnection() {
    app.setAwsCredentials(CONST.getAccessKey(), CONST.getSecretKey());
    conn = new AmazonS3Client(app.getAwsCredentials());
    app.setListOfBuckets(conn.listBuckets());
    System.out.println(CONST.getConnectionSuccessfullMessage());
    }

    private static void downloadBucket() {

    do {
        for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
            app.setBucketKey(objectSummary.getKey());
            app.setBucketName(objectSummary.getBucketName());
            if(objectSummary.getKey().contains(CONST.getDesiredKey())){
                //DOWNLOAD
                try 
                {
                    s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
                    s3Client.getObject(
                            new GetObjectRequest(app.getBucketName(),app.getBucketKey()),
                            new File(app.getDownloadedBucket())
                            );
                } catch (IOException e) {
                    e.printStackTrace();
                }

                do
                {
                     if(app.getBackUpExist() == true){
                        System.out.println("Converting back up file");
                        app.setCurrentPacsId(objectSummary.getKey());
                        passIn = app.getDataBaseFile();
                        CONVERT= new DataConversion(passIn);
                        System.out.println(CONST.getFileDownloadedMessage());
                    }
                }
                while(app.getObjectExist()==true);

                if(app.getObjectExist()== false)
                {
                    app.setNoObjectFound(true);
                }
            }
        }
        app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
    } 
    while (app.getS3Object().isTruncated());
}

/ ---------------------------- विस्तार विधियाँ ------------------- ------------------ /

//Unzip bucket after download 
public static void unzipBucket() throws IOException {
    unzip = new UnZipBuckets();
    unzip.unZipIt(app.getDownloadedBucket());
    System.out.println(CONST.getFileUnzippedMessage());
}

//list all S3 buckets
public static void listAllBuckets(){
    for (Bucket bucket : app.getListOfBuckets()) {
        String bucketName = bucket.getName();
        System.out.println(bucketName + "\t" + StringUtils.fromDate(bucket.getCreationDate()));
    }
}

//Get the contents from the auto back up bucket
public static void listAllBucketContents(){     
    do {
        for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
            if(objectSummary.getKey().contains(CONST.getDesiredKey())){
                System.out.println(objectSummary.getKey() + "\t" + objectSummary.getSize() + "\t" + StringUtils.fromDate(objectSummary.getLastModified()));
                app.setBackUpCount(app.getBackUpCount() + 1);   
            }
        }
        app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
    } 
    while (app.getS3Object().isTruncated());
    System.out.println("There are a total of : " + app.getBackUpCount() + " buckets.");
}

}


1

आप इसे s3cmd कमांड के साथ प्राप्त कर सकते हैं :

s3cmd get --recursive --continue s3://test-bucket local-directory/

1

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

इसलिए, मैं हमेशा इस उद्देश्य के लिए AWS CLI का उपयोग करने की सलाह देता हूं । आप बस इस लिंक से इसे स्थापित कर सकते हैं । इसके बाद, निम्न कमांड चलाएँ और अपनी कुंजी, गुप्त मूल्यों को AWS CLI में सहेजें।

aws configure

और अपने स्थानीय मशीन में अपने एडब्ल्यूएस एस 3 बाल्टी को सिंक करने के लिए निम्न कमांड का उपयोग करें। (स्थानीय मशीन में AWS CLI स्थापित होना चाहिए)

aws s3 sync <source> <destination>

उदाहरण:

1) स्थानीय भंडारण के लिए AWS S3 के लिए

aws s3 sync <S3Uri> <LocalPath>

2) स्थानीय भंडारण से लेकर एडब्ल्यूएस एस 3 तक

aws s3 sync <LocalPath> <S3Uri>

3) AWS s3 बाल्टी से दूसरी बाल्टी तक

aws s3 sync <S3Uri> <S3Uri> 

उदाहरण के लिए 3, क्या मैं एक बाल्टी फ़ोल्डर को दूसरे बाल्टी फ़ोल्डर में इंगित कर सकता हूं? दरअसल, मैं एक बाल्टी फोल्डर को दूसरे बकेट फोल्डर में सिंक करना चाहता हूं।
लुकाई

@ ललकाई हाँ। यह वही है जो मैंने उदाहरण 3 में दिया है। आपके पास स्रोत और गंतव्य के s3 बाल्टी URI होने की आवश्यकता है
Keet Sugathadasa

1

यदि आप केवल AWS से बाल्टी डाउनलोड करना चाहते हैं, तो पहले अपनी मशीन में AWS CLI स्थापित करें। टर्मिनल में उस डायरेक्टरी को बदलें जहाँ आप फ़ाइलों को डाउनलोड करना चाहते हैं और इस कमांड को चलाना चाहते हैं।

aws s3 sync s3://bucket-name .

यदि आप दोनों स्थानीय और s3 निर्देशिकाओं को सिंक करना चाहते हैं (यदि आपने स्थानीय फ़ोल्डर में कुछ फ़ाइलें जोड़ी हैं), तो यह कमांड चलाएँ:

aws s3 sync . s3://bucket-name

1

स्थानीय रूप से संपूर्ण S3 बाल्टी डाउनलोड करने के लिए AWS CLI सबसे अच्छा विकल्प है।

  1. AWS CLI स्थापित करें

  2. डिफ़ॉल्ट सुरक्षा क्रेडेंशियल और डिफ़ॉल्ट AWS क्षेत्र का उपयोग करने के लिए AWS CLI कॉन्फ़िगर करें

  3. पूरे S3 बाल्टी उपयोग कमांड को डाउनलोड करने के लिए

    aws s3 सिंक s3: // yourbucketname localpath

विभिन्न एडब्ल्यूएस सेवाओं के लिए एडब्ल्यूएस क्ली का उपयोग करने का संदर्भ: https://docs.aws.amazon.com/cli/latest/reference/


1

आप स्थानीय फ़ोल्डर में संपूर्ण S3 बाल्टी सामग्री को डाउनलोड करने के लिए इस AWS cli कमांड का उपयोग कर सकते हैं

aws s3 sync s3://your-bucket-name "Local Folder Path"

यदि आप इस तरह त्रुटि देखते हैं

fatal error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

--सत्यापित-एसएसएल (बूलियन)

डिफ़ॉल्ट रूप से, AWS सीएलआई AWS सेवाओं के साथ संचार करते समय SSL का उपयोग करता है। प्रत्येक SSL कनेक्शन के लिए, AWS CLI SSL प्रमाणपत्र सत्यापित करेगा। यह विकल्प एसएसएल प्रमाणपत्रों को सत्यापित करने के डिफ़ॉल्ट व्यवहार को ओवरराइड करता है। संदर्भ

इस टैग का उपयोग कमांड --no-verify-ssl के साथ करें

aws s3 sync s3://your-bucket-name "Local Folder Path" --no-verify-ssl

का उपयोग s3 syncकई बार पहले से ही कवर किया गया है। + --no-verify-sslइसके सुरक्षा परिणामों की व्याख्या किए बिना उपयोग का सुझाव देना अपराध है।
मार्टिन प्रिक्रील

सुरक्षा के बारे में जानकारी के लिए धन्यवाद। मैं इस मुद्दे का सामना करना पड़ा है और इस संदर्भ का उपयोग करते हुए यह हल docs.aws.amazon.com/cli/latest/reference
Dimuthu

1

अगर बाल्टी काफी बड़ी है तो एक कमांड है जिसे s4cmdसमानांतर कनेक्शन बनाते हैं और डाउनलोड समय में सुधार करता है:

इसे डेबियन की तरह स्थापित करने के लिए

apt install s4cmd

यदि आपके पास पाइप है:

pip install s4cmd

यह ~/.s3cfgफ़ाइल को पढ़ेगा यदि मौजूद है (यदि इंस्टॉल नहीं है s3cmdऔर रन नहीं है s3cmd --configure) या आप --access-key=ACCESS_KEY --secret-key=SECRET_KEYकमांड पर निर्दिष्ट कर सकते हैं ।

क्ली के समान है s3cmd। आपके मामले में एक syncकी सिफारिश की जाती है क्योंकि आप डाउनलोड को रद्द कर सकते हैं और फ़ाइलों को फिर से डाउनलोड किए बिना इसे फिर से शुरू कर सकते हैं।

s4cmd [--access-key=ACCESS_KEY --secret-key=SECRET_KEY] sync s3://<your-bucket> /some/local/dir

यदि आप बहुत अधिक डेटा डाउनलोड करते हैं तो सावधान रहें (> 1TB) यह आपके बिल को प्रभावित कर सकता है, पहले गणना करें जो कि लागत होगी


0

जैसा कि @layke ने कहा, फाइल को S3 क्लि से डाउनलोड करना सबसे अच्छा अभ्यास है यह एक सुरक्षित और सुरक्षित है। लेकिन कुछ मामलों में, लोगों को फ़ाइल डाउनलोड करने के लिए wget का उपयोग करने की आवश्यकता है और यहां समाधान है

aws s3 presign s3://<your_bucket_name/>

यह निर्धारित करेगा, आपको अस्थायी सार्वजनिक URL मिलेगा जिसे आप Sign से प्रेगनेंट या किसी अन्य डाउनलोड क्लाइंट का उपयोग करके अपने मामले में S3 से सामग्री डाउनलोड करने के लिए उपयोग कर सकते हैं।


0

इस आदेश का प्रयास करें:

aws s3 sync yourBucketnameDirectory yourLocalDirectory

उदाहरण के लिए, यदि आपका बकेट नाम है myBucketऔर स्थानीय निर्देशिका है c:\local, तो:

aws s3 sync s3://myBucket c:\local

Awscli के बारे में अधिक जानकारी के लिए इस aws cli स्थापना की जाँच करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.