দ্রুত এস 3 বালতি সদৃশ


94

আমি s3 সিএমডি এর চেয়ে বুকিটের সদৃশ করার জন্য আরও ভাল কমান্ড লাইন সরঞ্জামটি সন্ধান করার চেষ্টা করেছিs3cmdপ্রতিটি ফাইল ডাউনলোড এবং আপলোড না করে বালতিগুলি নকল করতে পারে। আমি সাধারণত s3Cmd ব্যবহার করে বালতি সদৃশ করতে চালিত কমান্ডটি হ'ল:

s3cmd cp -r --acl-public s3://bucket1 s3://bucket2

এটি কাজ করে, তবে এটি খুব ধীর হয় কারণ এটি প্রতিটি ফাইল একবারে API এর মাধ্যমে অনুলিপি করে। যদি s3cmdসমান্তরাল মোডে চলতে পারে তবে আমি খুব খুশি হব।

কমান্ড লাইন সরঞ্জাম বা কোড হিসাবে অন্যান্য বিকল্পগুলি উপলব্ধ রয়েছে যা লোকেদের তুলনায় দ্রুততর নকল করতে ব্যবহার করে s3cmd?

সম্পাদনা করুন: দেখে মনে হচ্ছে s3cmd- পরিবর্তনটি ঠিক আমি যা খুঁজছি। খুব খারাপ এটি কাজ করে না। অন্য কোন বিকল্প আছে?


6
এই প্রশ্নটি কেন বারবার বন্ধ হচ্ছে তা নিশ্চিত নয়, যেহেতু মনে হয় বেশ কয়েকটি বিকাশকারী এতে প্রবেশ করেছেন। যাইহোক, আমি এটি অত্যন্ত সমান্তরাল ফ্যাশনে সমাধান করেছি, এখানে লিঙ্কটি দেওয়া হয়েছে: github.com/cobbzilla/s3s3 মিরর ধন্যবাদ! - জোনাথন
কোবজিলা

উত্তর:


167

এডাব্লুএস সিএলআই পুরোপুরি এই কাজটি করবে বলে মনে হচ্ছে এবং এতে সরকারীভাবে সমর্থিত একটি সরঞ্জাম হওয়ার বোনাস রয়েছে।

aws s3 sync s3://mybucket s3://backup-mybucket

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

ডিফল্টরূপে সমবর্তী স্থানান্তর সমর্থন করে। দেখুন http://docs.aws.amazon.com/cli/latest/topic/s3-config.html#max-concurrent-requests

বিশাল সংখ্যক ছোট ফাইলগুলি দ্রুত স্থানান্তর করতে, বিলম্বিতা হ্রাস করতে ইসি 2 উদাহরণ থেকে স্ক্রিপ্টটি চালান, এবং max_concurrent_requestsবিলম্বের প্রভাব হ্রাস করতে বৃদ্ধি করুন । যেমন:

aws configure set default.s3.max_concurrent_requests 200

4
এটি ফাইল সংশোধিত সময়, আকার ইত্যাদির উপর ভিত্তি করে অবিচ্ছিন্ন সিঙ্ক সমর্থন করে I আমি বিশ্বাস করি অবজেক্টগুলি স্থানীয় মেশিনে ডাউনলোড না করে সরাসরি এস 3-তে অনুলিপি করা হয়েছে। এটি ডিফল্টরূপে সমান্তরালে চলবে না তবে আমি নিশ্চিত যে একই সময়ে পৃথক সাবফোল্ডারগুলিতে আপনার একাধিক সিঙ্ক কমান্ড চলতে পারে। এটি যথেষ্ট দ্রুতগতির যে সম্ভবত আপনার এটি আর যাইহোক সমান্তরালে চলতে হবে না। আমি কয়েক মিনিটের মধ্যেই 100 জিবি ডেটা ডুপ্লিকেট করেছি।
পাইথন 1981

11
ফাইলের সংখ্যা বেশি হলে নরক হিসাবে ধীরে ধীরে।
ফাং নগুইন

14
অনেকগুলি ছোট ফাইল স্থানান্তর করার সময় বিলম্বিতা মূল সীমাবদ্ধ হয়ে পড়ে তাই ইসি 2 উদাহরণ থেকে এই আদেশটি চালানো অপরিহার্য।
পাইথন 1981

4
আমি এটি একটি ডকার তৈরি করতে ব্যবহার করেছি এবং github.com/sunshineo/s3-bucket-copier
গর্ডন সান

4
এখন এটা সমবর্তী সিঙ্কিং :-) অবলম্বন পাওয়া docs.aws.amazon.com/cli/latest/topic/...
python1981

71

আপনি যদি এডাব্লুএস কনসোলটি ব্যবহার করতে আপত্তি করেন না তবে আপনি এটি করতে পারেন:

  1. প্রথম বালতিতে সমস্ত ফাইল / ফোল্ডার নির্বাচন করুন
  2. ক্রিয়া> অনুলিপি ক্লিক করুন
  3. একটি নতুন বালতি তৈরি করুন এবং এটি নির্বাচন করুন
  4. ক্রিয়াগুলি> আটকান ক্লিক করুন

এটি এখনও মোটামুটি ধীর, তবে আপনি এটিকে একা রেখে এটিকে তার কাজটি করতে দিতে পারেন।


গন্তব্যটিতে অনুলিপি করার সাথে সাথে এটি কি আমার মেশিনে উত্স বালতির সামগ্রীগুলি অনুলিপি করছে? অনেকগুলি নেটওয়ার্ক ক্রিয়াকলাপ রয়েছে এবং ব্রাউজার পরিদর্শক অত্যন্ত ধীর গতির তাই এটি বিশ্লেষণ করা শক্ত। আমার মেশিনে 600 কে / গুলি চলে। এটি তখন অ্যামাজন নেটওয়ার্কের মধ্যে স্থানান্তর শুরু করার চেয়ে আরও দ্রুততর হবে ... পরিবর্তে সেখানে চেষ্টা করবে।
ব্র্যাড গস

9
আমি আজ এই পদ্ধতিটি ব্যবহার করেছি। এটি আপনার স্থানীয় মেশিনে ফাইলগুলি টানতে পারে না - এটি সরাসরি অনুলিপি করে এবং অনেক বেশি দ্রুত।
গ্রেগ বেনিডিক্ট

7
এটি এখনও ফাইলের তালিকাটি আনছে। যদি তালিকাটি দীর্ঘ হয় (আমার ক্ষেত্রে কয়েক হাজার ফাইল) তবে হ্যাকের মতো ধীর হয়। এবং টাইমআউট / হ্যাং অত্যন্ত সম্ভবত
Phương Nguyễn

13
দুর্ভাগ্যক্রমে এই প্রক্রিয়াটি ব্রাউজারে আবদ্ধ। :( ডক্স থেকে : "আপনি অনুলিপি প্রক্রিয়া শুরু করার পরে অনুলিপিটি চলাকালীন আপনাকে অবশ্যই ব্রাউজারটি উন্মুক্ত রাখতে হবে" "
ডেভিড লেমায়িয়ান

4
আমি এটিতে 8 মিলিয়ন ফাইল সহ একটি বালতিতে এটি করার চেষ্টা করছি। সমস্ত চেকবক্স নির্বাচন করতে আমাকে কত মাস লাগবে তা জানেন না ...
ক্রিস হ্যারিসন

28

আমি এডাব্লুএস ওয়েব কনসোল, এবং s3cmdও ডাব্লুএসএস সিএলআই ব্যবহার করে দুটি বালতি ক্লোনিং করার চেষ্টা করেছি । যদিও এই পদ্ধতিগুলি বেশিরভাগ সময় কাজ করে তবে এগুলি বেদনাদায়কভাবে ধীর হয়।

তারপরে আমি পেয়েছি s3s3mirror: দুটি এস 3 বালতি সিঙ্ক করার জন্য একটি বিশেষ সরঞ্জাম। এটি বহু-থ্রেডেড এবং আমি চেষ্টা করেছি এমন অন্যান্য পদ্ধতির চেয়ে অনেক দ্রুত। আমি দ্রুত গিগা-বাইটস ডেটা এক এডাব্লুএস অঞ্চল থেকে অন্য জায়গায় সরিয়ে নিয়েছি।

এটি https://github.com/cobbzilla/s3s3mirror এ দেখুন , বা https://registry.hub.docker.com/u/pmoust/s3s3mirror/ থেকে ডকারের ধারকটি ডাউনলোড করুন


4
আপনার কাছে যদি স্থানান্তর করার জন্য প্রচুর ফাইল থাকে তবে এটি এখন পর্যন্ত কাজের সেরা সরঞ্জাম। লজ্জাজনকভাবে এটি উত্তরের তালিকার এতদূর নিচে ...
জন ক্রিসোস্টম

কিছু লোকের জন্য নোট: সংকলনের জন্য জাভা 6/7 প্রয়োজন।
ব্রায়ান

4
আমি এটি ইসি 2 উদাহরণ থেকে ব্যবহার করছি এবং এটি অবিশ্বাস্যভাবে দ্রুত কাজ করে! আমাকে <সোর্স-বালতি> এবং <ডিসটিনিশন- বালতি> কে আসল বালতির নাম (শেষ পয়েন্ট বা এডাব্লুএস সি এল এলির মতো কিছু নয়) দিয়ে প্রতিস্থাপন করতে হয়েছিল।
আয়রনমাউস

4
বিরাট সংখ্যক ফাইলের জন্য অন্যের চেয়ে অত্যন্ত প্রস্তাবিত আশ্চর্যজনক সরঞ্জাম। কপির থ্রেডের সংখ্যার উপর নিয়ন্ত্রণটি উজ্জ্বল।
শওনাক

আপনি কি মনে করেন না যে কাজটি করার জন্য তৃতীয় পক্ষের অ্যাপ্লিকেশন নয়, আউজ-ক্লিপ ব্যবহার করা আরও নিরাপদ? সর্বোপরি এই সরঞ্জামগুলি ব্যবহার করার জন্য আমাদের শংসাপত্রাদি বা অ্যাক্সেস কীগুলি সরবরাহ করতে হবে।
কিট সুগঠাদাস

11

অ্যাডহক সমাধানের জন্য aws cliবালতিগুলির মধ্যে সিঙ্ক করতে ব্যবহার করুন:

aws s3 syncগতি উপর নির্ভর করে:
- এস 3 এন্ডপয়েন্টে একটি এপিআই কলের জন্য বিলম্বিতা
- একসাথে করা এপিআই কলগুলির পরিমাণ

সিঙ্কের গতি বাড়ানোর জন্য:
- aws s3 syncএকটি এডাব্লুএস উদাহরণ থেকে চালানো (ফ্রিবিএসডি-তে c3.large ঠিক আছে ;-))
- আপডেট করুন with / .aws / কনফিগার:
- max_concurrent_requests = 128
-max_queue_size = 8096

নিম্নলিখিত কনফিগারেশন এবং উদাহরণ টাইপের সাহায্যে আমি 474 সেকেন্ডের মধ্যে বালতি (309 জিবি, 72 কে ফাইল, ইউএস-ইস্ট -1) সিঙ্ক করতে সক্ষম হয়েছি।

আরও জেনেরিক সমাধানের জন্য বিবেচনা করুন - এডাব্লুএস ডেটাপাইপলাইন বা এস 3 ক্রস-অঞ্চল প্রতিলিপি।


আপনি কি জানেন আমি যদি এস 3 সিপি ব্যবহার করি তবে আমি একই পারফরম্যান্সের আশা করতে পারি? আপনি কি নিশ্চিত যে আপনি যখন সিঙ্কটি ব্যবহার করেছিলেন তখন এটি আসলে সমস্ত 309 জিবি স্থানান্তরিত হয়েছিল? সিঙ্কটি কেবল সেই ফাইলগুলিকে সিঙ্ক করবে যা অন্য বালতিতে একই নয় বা উপস্থিত নয়।
তুষারপাত

এছাড়াও, আমার কাছে 1 কে বা তার চেয়ে কম ফাইল রয়েছে এমন ব্যবহারের ক্ষেত্রে আপনার কী ধারণা রয়েছে তবে সেগুলি আকার (10 জিবি) বড়? আপনি কি মনে করেন আমি আপনার সাথে একইরকম পারফরম্যান্স দেখব?
তুষারপাত

@ ফ্রস্টি, আমার ক্ষেত্রে গন্তব্য বালতি খালি ছিল। প্রতি awscliডক - aws syncকেবলমাত্র নতুন এবং আপডেট হওয়া ফাইলগুলি অনুলিপি করুন। সম্ভবত আপনার সাথে উচ্চতর পারফরম্যান্সের আশা করা উচিত aws cp(অনুলিপি অভ্যন্তরীণভাবে করা হয়, আপনার ক্লায়েন্ট কেবল একটি এপিআই কল দেয়)। কর্মক্ষমতা এই কারণগুলির উপর নির্ভর করে: ১. এসআরসি এবং ডিএসটি অঞ্চলের মধ্যে বিলম্ব (যেমন মার্কিন-পূর্ব-এক্স থেকে আমাদের-পশ্চিম-এক্স) ২. আপনার ক্লায়েন্ট এবং এডাব্লুএস এপিআই এর শেষ পয়েন্টের মধ্যে বিলম্বিতা (আপনি কত দ্রুত কোনও এপিআই কল দিতে পারবেন) 3। একযোগে অনুরোধের পরিমাণ (আপনার ক্লায়েন্ট প্রতি সেকেন্ডে কতগুলি অনুরোধ প্রকাশ করতে পারে) আমার ক্ষেত্রে 309 জি একই অঞ্চলে বাল্টের মধ্যে অনুলিপি করা হয়েছিল (আমাদের পূর্ব -1)
টম লিম

3

এটি অতিরিক্ত তথ্য যুক্ত করে এই বিষয়ে গুগলের প্রথম হিট সম্পর্কে।

'সাইনো' এস 3 সেন্টিমিডি-মডিফিকেশনের একটি নতুন সংস্করণ তৈরি করেছে, যা এখন সমান্তরাল বালতি থেকে বালতি সিঙ্ককে সমর্থন করে supports ঠিক আমিও অপেক্ষায় ছিলাম।

টানুন অনুরোধটি https://github.com/pcorliss/s3cmd-modifications/pull/2 এ রয়েছে , তার সংস্করণটি https://github.com/pearltrees/s3cmd- Modifications এ রয়েছে


s3cmd- পরিবর্তনটি আমাকে অনুলিপি করার দিনগুলি সংরক্ষণ করেছিল।
gak

2

আমি অন্য কোনও এস 3 কমান্ড লাইন সরঞ্জামগুলি জানি না তবে এখানে যদি কিছু না আসে তবে আপনার নিজের লেখাটি সবচেয়ে সহজ হতে পারে।

আপনার পছন্দ মতো ভাষা এবং অ্যামাজন এসডিকে / টুলকিট চয়ন করুন। তারপরে আপনাকে কেবল উত্স বালতির সামগ্রীগুলি তালিকাবদ্ধ / পুনরুদ্ধার করতে হবে এবং প্রতিটি ফাইল অনুলিপি করতে হবে (স্পষ্টতই সমান্তরালে)

এস 3 সিএমডি-সংশোধন করার উত্সের দিকে তাকিয়ে (এবং আমি স্বীকার করি যে আমি পাইথন সম্পর্কে কিছুই জানি না) দেখে মনে হচ্ছে তারা বালতি-টু-বালতি কোডের সমান্তরাল না করে তবে আপনি সম্ভবত স্ট্যান্ডার্ড আপলোড / ডাউনলোড সমান্তরাল কোডটিকে একটি প্রাথমিক পয়েন্ট হিসাবে ব্যবহার করতে পারেন এটা কর.


হ্যাঁ আমি এই ধারণার সাথে টোয়িং করে চলেছি এবং ইভেন্ট মেশিনের সাহায্যে সন্ধ্যার সাথে এটি রুবিতে লিখছি বা জেআরবিতে থ্রেড করেছি। তবে, এস 3 সিএমডি ইতিমধ্যে বেশ সম্পূর্ণ এবং আমি বরং এটি ব্যবহার করব। আমি এস 3 সিএমডি বিকাশকারীদের সাথে কথা বলছি এবং পাইপলাইনে তার কয়েকটি সমাধান রয়েছে যা সম্ভবত পারফরম্যান্স সমস্যার সমাধান করবে।
শন ম্যাকক্লেয়ারি

1

একটি সাধারণ aws s3 cp s3://[original-bucket] s3://[backup-bucket] --recursiveকাজ ভাল করে (ধরে নিলাম আপনার ক্লাস সেটআপ আছে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.