amazon-s3 - एक संपूर्ण एस 3 बाल्टी डाउनलोड कर रहा है?





amazon-web-services (17)


आपके पास ऐसा करने के लिए मूल रूप से कई विकल्प हैं, लेकिन सबसे अच्छा एडब्ल्यूएस सीएलआई का उपयोग कर रहा है

यहाँ एक walkthrough है

  • चरण 1

अपनी मशीन में एडब्ल्यूएस सीएलआई डाउनलोड और इंस्टॉल करें

एमएसआई इंस्टॉलर (विंडोज) का उपयोग कर एडब्ल्यूएस सीएलआई स्थापित करें

बंडल इंस्टॉलर (लिनक्स, ओएस एक्स, या यूनिक्स) का उपयोग करके एडब्ल्यूएस सीएलआई स्थापित करें

  • चरण 2

एडब्ल्यूएस सीएलआई कॉन्फ़िगर करें

सुनिश्चित करें कि आप वैध पहुंच कुंजी और गुप्त कुंजी इनपुट करते हैं जिसे आपने खाता बनाया था जब आपने प्राप्त किया था

  • चरण 3

निम्न आदेश के साथ s3 बाल्टी सिंक करें

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

निम्न डेटा के साथ उपरोक्त आदेश बदलें

yourbucket >> अपनी एस 3 बाल्टी जिसे आप डाउनलोड करना चाहते हैं

/ स्थानीय / पथ >> अपने स्थानीय सिस्टम में पथ जहां आप सभी फाइलें डाउनलोड करना चाहते हैं

उम्मीद है की यह मदद करेगा!

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

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




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

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

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




मैंने अमेज़ॅन एस 3 डेटा को स्थानीय मशीन पर कॉपी करने के लिए कुछ अलग-अलग तरीकों का उपयोग किया है, जिसमें एस 3 सीएमडी शामिल है, और अब तक साइबरडक सबसे आसान है। आपको बस इतना करना है कि आप अपने अमेज़ॅन प्रमाण-पत्र दर्ज करें और अपनी बाल्टी / फ़ोल्डरों / फ़ाइलों को डाउनलोड / अपलोड / सिंक करने के लिए सरल इंटरफ़ेस का उपयोग करें।




एडब्ल्यूएस एस 3 सीएलआई का उपयोग करके डाउनलोड करने के लिए:

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

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

जीयूआई का उपयोग करके डाउनलोड करने के लिए, साइबरडक का प्रयोग करें।

आशा करता हूँ की ये काम करेगा.. :)




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




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




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

http://s3browser.com/




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







यदि आप विजुअल स्टूडियो का उपयोग करते हैं, तो http://aws.amazon.com/visualstudio/ डाउनलोड करें

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

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




एडब्ल्यूएस सीएलआई

एडब्ल्यूएस सीएलआई के लिए दस्तावेज़ीकरण

एडब्ल्यूएस ने हाल ही में अपने कमांड लाइन टूल्स जारी किए हैं। यह बोटो की तरह बहुत काम करता है और sudo easy_install awscli या sudo pip install awscli का उपयोग करके स्थापित किया जा सकता है

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

कमान :

aws s3 sync s3://mybucket .

आउटपुट :

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

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

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

दस्तावेज़ीकरण और अन्य उदाहरण देखें:

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html




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

    //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.");
}

}







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

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

अद्यतन करें

एक और उपकरण है जिसे आप Rclone नामक उपयोग कर सकते हैं। नीचे Rclone दस्तावेज़ में एक कोड नमूना है।

rclone sync /home/local/directory remote:bucket



@ लयके द्वारा उत्तर अच्छा है, लेकिन यदि आपके पास डेटा का एक टन है और हमेशा के लिए इंतजार नहीं करना चाहता है, तो आपको इस दस्तावेज़ीकरण पर ध्यान देना चाहिए कि एडब्ल्यूएस एस 3 सीएलआई सिंक कमांड को भारी समांतरता के साथ बाल्टी सिंक्रनाइज़ करने के लिए कैसे प्राप्त करें । निम्नलिखित आदेश एडब्ल्यूएस सीएलआई को नौकरियों को निष्पादित करने के लिए 1,000 धागे का उपयोग करने के लिए बताएंगे (प्रत्येक छोटी फ़ाइल या मल्टीपार्ट प्रति का एक हिस्सा) और 100,000 नौकरियों को देखें:

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

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

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.5 एमआईबी / एस से 700 + एमआईबी / एस तक जाती है, जो डिफ़ॉल्ट कॉन्फ़िगरेशन पर 70x की गति वृद्धि करती है।




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




जब तक आपकी बोली कीमत स्पॉट इंस्टेंस बाजार मूल्य से ऊपर न हो, तब तक आप जो भी स्पॉट इंस्टेंस चाहते हैं उसे चलाने के लिए जारी रख सकते हैं, और केवल बाजार मूल्य का भुगतान कर सकते हैं।

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

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





amazon-s3 amazon-web-services