फ़ाइलों को सीधे एक S3 खाते से दूसरे में स्थानांतरित करें?


90

बहुत बुनियादी सवाल है, लेकिन मैं एक जवाब खोजने में सक्षम नहीं है। ट्रांज़िट का उपयोग करके मैं एक S3 बाल्टी से एक AWS खाते पर "S" बाल्टी को दूसरे AWS खाते पर "S" कर सकता हूँ, लेकिन यह वास्तव में क्या करता है पहली से फ़ाइलों को डाउनलोड करें और फिर दूसरे पर अपलोड करें।

क्या बीच में डाउनलोड किए बिना फ़ाइलों को सीधे एक S3 खाते से दूसरे में स्थानांतरित करने का एक तरीका है?

जवाबों:


22

यदि आप अभी तैयार किए गए समाधान की तलाश कर रहे हैं तो कुछ समाधान हैं जो ऐसा कर सकते हैं। बाल्टी एक्सप्लोरर मैक और विंडोज पर काम करता है और क्लाउडबेरी एस 3 एक्सप्लोरर और एस 3 ब्राउज़र के रूप में खातों में कॉपी कर सकता है लेकिन वे केवल विंडोज हैं इसलिए आपके लिए काम नहीं कर सकते हैं।

मुझे संदेह है कि एडब्ल्यूएस कंसोल उचित अनुमति सेटअप के साथ भी कर सकता है लेकिन मैंने इसका परीक्षण नहीं किया है।

आप AWS API का उपयोग करके भी कर सकते हैं जब तक आपने AWS खाता दिया है आप गंतव्य बकेट के लिए लेखन अनुमति का उपयोग कर रहे हैं ।


बाल्टी एक्सप्लोरर के लिए +1। खातों के बीच एक बाल्टी की नकल करने के लिए AWS प्रबंधन कंसोल या s3cmd से बहुत आसान है। दिशाओं के दूसरे सेट ने मेरे लिए उनके नि: शुल्क परीक्षण के साथ काम किया: bucketexplorer.com/documentation/…
LennonR

क्लाउडबेरी जाने का रास्ता है। नि: शुल्क, प्लस यह एक आसान खींचें और ड्रॉप भी एक आसान सेटअप के बाद है। और नहीं, मैं वहां काम नहीं करता हूं :)
स्किडडन

3
क्या बकेट एक्सप्लोरर डेटा को डाउनलोड और फिर से अपलोड करता है, या क्या यह डेटा को सीधे अमेज़ॅन सर्वर के बीच स्थानांतरित करता है?
राउटर

ध्यान दें कि Cloudberry के परीक्षण संस्करण (संस्करण 5.0.0.32 कम से कम) में 5GB स्थानांतरण सीमा है!
डार्थपब्लो

123

हां वहां एक रास्ता है। और यह बहुत आसान है, हालांकि इसे ढूंढना मुश्किल है। 8)

उदाहरण के लिए, मान लें कि आपका पहला खाता उपयोगकर्ता नाम acc1@gmail.com है और दूसरा acc2@gmail.com है।

Acc1 के रूप में AWS मैनेजमेंट कंसोल खोलें । अमेज़ॅन S3 बाल्टी गुणों के लिए जाओ, और "अनुमतियाँ" टैब में "अधिक अनुमतियाँ जोड़ें" पर क्लिक करें। फिर "प्रामाणिक उपयोगकर्ता" के लिए सूची और दृश्य अनुमतियाँ जोड़ें।

अगला, acc2 के AWS IAM (यह कंसोल टैब के बीच से सुलभ है) में S3 बाल्टी तक पूरी पहुँच के साथ एक उपयोगकर्ता बनाते हैं (अधिक सुरक्षित होने के लिए, आप सटीक अनुमतियां सेट कर सकते हैं, लेकिन मैं स्थानांतरण के लिए एक अस्थायी उपयोगकर्ता बनाना पसंद करता हूं और फिर इसे हटा दें)।

तब आप कुछ करने के लिए s3cmd ( acc2 में नए बनाए गए उपयोगकर्ता के क्रेडेंशियल्स का उपयोग) कर सकते हैं:

s3cmd cp s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive

सारा ट्रांसफर अमेजन की तरफ से किया जाएगा।


8
महान टिप! साथ ही पूरे बाल्टियां ला ला सिंक करने के लिए rsync, आप उपयोग कर सकते हैं s3cmd sync s3://acc1_bucket s3://acc2_bucket
lllllll

6
यदि आपको लक्ष्य से होस्ट में फ़ाइलों की प्रतिलिपि बनाते समय 403 AccessDenied के साथ समस्या है, तो इस पोस्ट को देखें। ऐसा करने का एक और तरीका हो सकता है, लेकिन यहां के परिणामों ने मेरे लिए काम किया। alfielapeter.com/posts/…
crlane

कुछ बड़ी बाल्टियों के बारे में क्या? 50gb क्षेत्र में कहते हैं, क्या यह आपको कोई समस्या देता है?
ianstarz

4
s3cmdhomebrew के साथ भी स्थापित किया जा सकता है,
fyi

3
यदि आपकी गंतव्य बाल्टी सार्वजनिक रूप से फ़ाइलों की सेवा करने के लिए है .. तो आप --acl-publicअन्यथा जोड़ना चाह सकते हैं , सभी फाइलें निजी हैं (कम से कम यह मेरे लिए था जब मैंने कमांड किया था)। इतनी सारी निजी फाइलों के साथ, मुझे उन सभी को फिर से सार्वजनिक करने के लिए बाल्टी में एक नीति
जोड़नी पड़ी

58

Aws cli का प्रयोग करें (मैंने ubuntu 14 ec2 उदाहरण का उपयोग किया है) और बस निम्नलिखित कमांड चलाएँ:

aws s3 sync s3://bucket1 s3://bucket2

आपको एक के लिए खाता विवरण निर्दिष्ट करने की आवश्यकता होगी, और दूसरे पर सार्वजनिक लेखन पहुंच या सार्वजनिक रीड एक्सेस होनी चाहिए।

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


3
एक बहुत बड़ी बाल्टी पर मुझे इसके साथ बेहतर भाग्य मिला था। s3cmd पहली बकेट में फाइलों की सूची तैयार करता हुआ दिखाई दिया। यह पूरा हो सकता है, लेकिन मैं अधीर हो गया।
overthink

2
मेरा भी ऐसा ही अनुभव है; जो भी कारण के लिए, की aws s3 syncतुलना में तेजी से परिमाण के एक आदेश के बारे में लगता है s3cmd cp
pix0r

2
इसने मेरे लिए काम किया। यदि आप अनुमतियों के मुद्दों में भाग लेते हैं, तो --grantsविकल्प का उपयोग करके देखें । प्रलेखन में अधिक जानकारी: docs.aws.amazon.com/cli/latest/reference/s3/sync.html
21.938

3
जब आप सिंक करते हैं तो अनुमतियां कॉपी नहीं की जाती हैं, इसलिए आपको निर्दिष्ट करना होगा --grants। मैंने एक टन डेटा कॉपी करने के बाद यह सीखा और फिर सिंक को एक नई बाल्टी में फिर से लाना पड़ा। --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsersसार्वजनिक उपयोगकर्ताओं के लिए सेट की अनुमति पढ़ें।
डैन सैंडलैंड

यह s3cmdमेरे लिए लगभग 10x तेज़ी से भाग गया , और भविष्य में कमांड को फिर से चलाने के लिए आपको सब कुछ फिर से कॉपी करने की बजाय परिवर्तन फ़ाइलों को सिंक करने में सक्षम है - बहुत बेहतर!
nfm

5

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


3

Mac OS XI पर पैनिक से ट्रांसमिट ऐप का इस्तेमाल किया गया। मैंने प्रत्येक S3 खाते (एपीआई कुंजी और रहस्य का उपयोग करके) के लिए एक विंडो खोली। मैं फिर एक खिड़की से एक बाल्टी को दूसरी खिड़की में दूसरी बाल्टी में खींच सकता था। फ़ाइलों को पहले स्थानीय रूप से डाउनलोड करने की आवश्यकता नहीं है

एंड्रयू सही है, Transmit स्थानीय रूप से फ़ाइलों को डाउनलोड करता है फिर फ़ाइलों को अपलोड करता है।


2
मेरे पास ट्रांसमिट है, और मैं 99% सकारात्मक हूं कि आप जिस ट्रांसफर का वर्णन कर रहे हैं वह फाइलों को एक अस्थायी फ़ोल्डर में डाउनलोड करता है और फिर दूसरे सर्वर पर अपलोड करता है। क्या आप सकारात्मक हैं फाइलें आपके कंप्यूटर से नहीं बहती हैं?
एंड्रयू

1
क्या कोई इसकी पुष्टि कर सकता है?
डेविड मौरिसियो

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

3

S3 फ़ाइलों को एक खाते से दूसरे खाते में ले जाएँ

आइए विचार करें कि दो खाते हैं स्रोत खाता और गंतव्य खाता। और दो बाल्टी source-bucketऔर destination bucket। हम से सभी फाइलों को ले जाना चाहते हैं source-bucketकरने के लिए destination-bucket। हम इसे निम्न चरणों से कर सकते हैं:

  1. aws configure
    • क्रेडेंशियल या IAM भूमिका का उपयोग करके अपने गंतव्य खाते को कॉन्फ़िगर करें।
  2. गंतव्य खाता उपयोगकर्ता के लिए उपयोगकर्ता नीति बनाएँ।
  3. स्रोत-बाल्टी नीति को संशोधित करके और उसमें गंतव्य खाता उपयोगकर्ता नीति जोड़कर स्रोत-बाल्टी को गंतव्य उपयोगकर्ता की पहुंच प्रदान करें। इस तरह, गंतव्य उपयोगकर्ता के पास स्रोत-बाल्टी तक पहुंच होगी।
  4. aws s3 ls s3://source-bucket/
    • यह जाँच करेगा कि गंतव्य खाता स्रोत-बाल्टी तक पहुंच रहा है या नहीं। बस पुष्टि के लिए ऐसा करें।
  5. aws s3 cp s3://source-bucket s3://destination-bucket --recursive
    • यह स्रोत-बकेट को सभी फाइलों को गंतव्य-बकेट में कॉपी कर देगा। सभी फ़ाइलों की प्रतिलिपि बनाई जाती है - क्रेसीसिव फ्लैग का उपयोग करके।
  6. aws s3 mv s3://source-bucket s3://destination-bucket --recursive
    • यह स्रोत-बाल्टी से गंतव्य-बाल्टी तक सभी फ़ाइलों को स्थानांतरित करेगा।

वैकल्पिक आप सिंक कमांड का उपयोग कर सकते हैं - aws s3 sync s3://source-bucket s3://detination-bucket

बेहतर स्पष्टीकरण के लिए लिंक का अनुसरण करें


2

CrossFTP उन्हें डाउनलोड किए बिना S3 फ़ाइलों को एक बाल्टी से दूसरी में सीधे कॉपी कर सकता है। यह एक GUI S3 क्लाइंट है जो विंडोज, मैक और लिनक्स पर काम करता है।


4
यह ध्यान दिया जाना चाहिए कि यह केवल भुगतान किए गए संस्करण के साथ ही संभव है। यह एक नि: शुल्क समाधान नहीं है।
माइकल ब्रुक

2

आप साइबरडक (ओपन सोर्स) यूजर कर सकते हैं


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

1

नई बनाई गई फ़ाइलों के लिए (मौजूदा ऑब्जेक्ट नहीं), आप AWS से नई कार्यक्षमता का लाभ ले सकते हैं। यह क्रॉस-रीजन रीप्लेसमेंट (S3 बाल्टी के लिए "वर्जनिंग" के तहत) है। आप एक ऐसी नीति बना सकते हैं जो आपको एक अलग खाते में एक बाल्टी में नई वस्तुओं को दोहराने की अनुमति देगा।

मौजूदा वस्तुओं के लिए, आपको अभी भी अपनी वस्तुओं को किसी अन्य विधि का उपयोग करके कॉपी करना होगा - जब तक कि AWS भविष्य में इसके लिए मूल कार्यक्षमता का परिचय न दे।


0

निम्नलिखित के साथ एक ऐसा कर सकते हैं:

aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive

  1. स्रोत खाते में स्रोत बाल्टी के लिए एक बाल्टी नीति संलग्न करें।

  2. गंतव्य खाते में उपयोगकर्ता या भूमिका के लिए AWS पहचान और पहुँच प्रबंधन (IAM) नीति संलग्न करें।

  3. क्रॉस-अकाउंट चाल को करने के लिए गंतव्य खाते में IAM उपयोगकर्ता या भूमिका का उपयोग करें।

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