ন্যূনতম ব্যয় সহ দুটি এস 3 বালতির মধ্যে কীভাবে ফাইল সরানো যায়?


44

আমার একটি অ্যামাজন এস 3 বালতিতে কয়েক মিলিয়ন ফাইল রয়েছে এবং আমি এই ফাইলগুলি অন্য বালতি এবং ফোল্ডারে ন্যূনতম ব্যয় বা সম্ভব হলে কোনও ব্যয় সহ সরিয়ে নিতে চাই। সমস্ত বালতি একই জোনে।

আমি এটা কিভাবে করতে পারি?

উত্তর:


53

মিলিয়ন মিলিয়ন একটি বড় সংখ্যা - আমি পরে এটিতে ফিরে আসব।

আপনার পদ্ধতির নির্বিশেষে, অন্তর্নিহিত প্রক্রিয়াটি কেবল একটি বালতি থেকে অন্য বালিতে সরাসরি অনুলিপি করা দরকার - এইভাবে (যেহেতু আপনার বালতি একই অঞ্চলে থাকে) আপনাকে ব্যান্ডউইথের জন্য কোনও মূল্য দিতে হবে না। অন্য যে কোনও পন্থা কেবল অদক্ষ (যেমন ফাইলগুলি ডাউনলোড এবং পুনরায় আপলোড করা)।

বালতিগুলির মধ্যে অনুলিপিটি 'পুট কপি' ব্যবহার করে সম্পন্ন হয় - এটি একটি পুট অনুরোধ যা এতে 'এক্স-এমজেড-কপি-উত্স' শিরোনামটি অন্তর্ভুক্ত করে - আমি বিশ্বাস করি এটি একটি কপির অনুরোধ হিসাবে শ্রেণিবদ্ধ। এটি ফাইলটি এবং পূর্বনির্ধারিতভাবে সম্পর্কিত মেটা-ডেটা অনুলিপি করবে। আপনি যদি একই সময়ে এসিএল সেট করতে চান তবে আপনাকে অবশ্যই সঠিক মান সহ একটি 'x-amz-acl' অন্তর্ভুক্ত করতে হবে (অন্যথায়, এটি ব্যক্তিগতে ডিফল্ট হবে)। আপনার কপি অনুরোধগুলির জন্য আপনাকে চার্জ করা হবে (0.01 / 1,000 অনুরোধগুলি)। অনিবদ্ধ ফাইলগুলি অনুলিপি করার পরে আপনি মুছে ফেলতে পারেন (অনুরোধের চার্জ দেবে না)। (একটি বিষয় যা সম্পর্কে আমি পুরোপুরি পরিষ্কার নই তা হ'ল একটি কপির অনুরোধটিও জিইটি অনুরোধের চার্জ বহন করে কিনা, কারণ বস্তুকে প্রথমে উত্স বালতি থেকে আনতে হবে - যদি তা হয় তবে চার্জটি অতিরিক্ত $ 0.01 / 10,000 পাবে অনুরোধ).

উপরের চার্জগুলি আপাতদৃষ্টিতে অপ্রয়োজনীয় - আপনি প্রায় 10 মিলিয়ন (বা 11 ডলার) সন্ধান করছেন এমন এক মিলিয়ন অবজেক্টের জন্য। যেহেতু শেষ পর্যন্ত আপনাকে অবশ্যই গন্তব্য বালতিতে ফাইলগুলি তৈরি করতে হবে, অন্য পদ্ধতিগুলি (যেমন ফাইলগুলি টেক-জিপিং করা ফাইলগুলি, আমাজন আমদানি / রফতানি ইত্যাদি) এই ব্যয়টি পাবে না। কোনওটিই কম নয়, অ্যামাজনকে যোগাযোগ করার সময় এটি আপনার পক্ষে মূল্যবান হতে পারে যদি আপনার কাছে কয়েক মিলিয়ন অবজেক্ট ট্রান্সফার করতে হয়।

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

কিছু কমান্ড লাইন পদ্ধতির রয়েছে যা বেশ কার্যকর হতে পারে:

  • s3cmd- পরিবর্তন (যে নির্দিষ্ট টান অনুরোধ) সমান্তরাল সিপি এবং এমভি কমান্ড অন্তর্ভুক্ত এবং আপনার জন্য একটি ভাল বিকল্প হতে হবে।
  • এডাব্লুএস কনসোলটি সরাসরি অনুলিপিটি সম্পাদন করতে পারে - যদিও এটি কতটা সমান্তরাল তার জন্য আমি কথা বলতে পারি না।
  • টিম কে-র অ্যাবস স্ক্রিপ্টটি অনুলিপিটি করতে পারে - তবে এটি সমান্তরাল নয় - আপনার সম্পূর্ণ অনুলিপিটি চালানোর জন্য আপনাকে এটির স্ক্রিপ্ট করতে হবে (সম্ভবত এই ক্ষেত্রে সেরা বিকল্প নয় - যদিও এটি দুর্দান্ত স্ক্রিপ্ট)।
  • ক্লাউডবেরি এস 3 এক্সপ্লোরার , বালতি এক্সপ্লোরার এবং ক্লাউডবডি সবার কাজটি সম্পাদন করতে সক্ষম হওয়া উচিত, যদিও আমি জানি না যে প্রতিটি স্ট্যাকের দক্ষতা কীভাবে বাড়ছে । যদিও আমি বিশ্বাস করি যে এর বেশিরভাগের মাল্টি-থ্রেড বৈশিষ্ট্যগুলির জন্য সফ্টওয়্যার কেনার প্রয়োজন।
  • উপলব্ধ একটি এসডিকে ব্যবহার করে নিজের স্ক্রিপ্ট করুন।

S3fs কাজ করতে পারে এমন কিছু সম্ভাবনা রয়েছে - এটি বেশ সমান্তরাল, একই বালতিটির মধ্যে অনুলিপিগুলি সমর্থন করে - বিভিন্ন বালতির মধ্যে অনুলিপি সমর্থন করে না, তবে বিভিন্ন বালতির মধ্যে চলনগুলিকে সমর্থন করতে পারে

আমি এস 3 সিএমডি-পরিবর্তন দিয়ে শুরু করব এবং এটির সাথে আপনার কোনও সাফল্য রয়েছে কিনা তা দেখুন বা আরও ভাল সমাধানের জন্য অ্যামাজনের সাথে যোগাযোগ করুন।


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

3
কোথায় aws s3 sync s3://source s3://destinationফিট?
অলিভিয়ার লালনদে

7

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

বালতি এ থেকে বালতি বিতে ফাইলগুলি অনুলিপি করতে AWS CLI সরঞ্জাম ব্যবহার করে

উ: নতুন বালতি তৈরি করুন

$ aws s3 mb s3://new-bucket-name

খ। পুরোনো বালতিটি নতুন বালতির সাথে সিঙ্ক করুন

$ aws s3 sync s3://old-bucket-name s3://new-bucket-name

20,000+ অবজেক্ট অনুলিপি করা হচ্ছে ...

17:03 শুরু হয়েছিল

17:06 এ শেষ হয়েছে

20,000+ অবজেক্টের মোট সময় = প্রায় 3 মিনিট

নতুন বালতিটি সঠিকভাবে কনফিগার হয়ে গেলে, অনুমতি, নীতি ইত্যাদি এবং আপনি পুরানো বালতিটি মুছে ফেলতে ইচ্ছুক।

গ। পুরানো বালতি মুছুন / মুছুন

$ aws s3 rb --force s3://old-bucket-name

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

আপনার পদ্ধতিতে আমার একটি সমস্যা ছিল: ফাইলগুলির গোপনীয়তা সবই ব্যক্তিগত সেট করা হয়েছিল, এমনকি বেশিরভাগ বস্তু সর্বজনীন হলেও কী ঘটবে?
মার্সেলো আগিমিভেল

5

আমি নিশ্চিত নই যে এটি সর্বোত্তম পন্থা তবে এডাব্লুএস ম্যানেজমেন্ট কনসোলের একটি কাট / অনুলিপি / পেস্ট বৈশিষ্ট্য রয়েছে। ব্যবহার করা খুব সহজ এবং দক্ষ।


6
এটি মিলিয়ন ফাইলের সাথে ভালভাবে কাজ করার সম্ভাবনা নেই।
জেমস

@ জামেস যন্ত্রণাদায়কভাবে তা নিশ্চিত করতে পারে;)
ছিনিয়ে নিন

3

আমি ভেবেছিলাম আপনি এখনই সম্ভবত একটি ভাল সমাধান খুঁজে পেয়েছেন, তবে অন্য যারা এই সমস্যার মুখোমুখি হচ্ছেন (যেমন আমি সম্প্রতি ছিলাম), আমি একটি সাধারণ ইউটিলিটি বিশেষত একটি এস 3 বালতিকে অন্যটিতে আয়না দেওয়ার উদ্দেশ্যে তৈরি করেছি একটি অত্যন্ত সমবর্তী, তবুও সিপিইউ এবং মেমরি দক্ষ পদ্ধতি।

এটি এখানে অ্যাপাচি লাইসেন্সের অধীনে গিথুব এ রয়েছে: https://github.com/cobbzilla/s3s3mirror

যদি আপনি এটি চেষ্টা করার সিদ্ধান্ত নেন তবে আপনার কোনও প্রতিক্রিয়া থাকলে দয়া করে আমাকে জানান।


এস 3 এস 3 এমিরর দিয়ে আমার দুর্দান্ত অভিজ্ঞতা ছিল। আমি এটি এম 1.সামান্য ইসি 2 নোডে সেট আপ করতে এবং প্রায় 2 ঘন্টার মধ্যে 1.5 মিলিয়ন অবজেক্টগুলি অনুলিপি করতে সক্ষম হয়েছি। মাভেন এবং জাভা সম্পর্কে আমার অপরিচিততার কারণে সেটআপটি কিছুটা শক্ত ছিল, তবে উবুন্টুতে সমস্ত কিছু ইনস্টল করার জন্য এটি কেবল কয়েকটি অ্যাপ-গেট কমান্ড নিয়েছিল। একটি সর্বশেষ নোট: যদি (আমার মতো) আপনি যদি একটি বড়, গুরুত্বপূর্ণ এস 3 বালতিতে অজানা স্ক্রিপ্ট চালানোর বিষয়ে উদ্বিগ্ন হন তবে অনুলিপিটি কপিরাইট থেকে বালিতে কেবল পঠনযোগ্য অ্যাক্সেস সহ একটি বিশেষ ব্যবহারকারী তৈরি করুন এবং সেই শংসাপত্রগুলি ব্যবহার করুন। দুর্ঘটনা মোছার জিরো সুযোগ।
মিকাহ

এটি কি বিভিন্ন অ্যাকাউন্টের মধ্যে বালতিতে প্রয়োগ করা যেতে পারে?
অলিভার বুর্দেকিন

@ অলিভারবুরকিন হ্যাঁ এটি করার একটি --cross-account-copyবিকল্প আছে ( -Cসংক্ষেপে)। মনে রাখবেন যে অ্যাকাউন্টগুলি অনুলিপি করার সময়, এসিএলগুলি অনুলিপি করা হয় না ; গন্তব্য বালতির মালিকের অনুলিপি করা ডেটাতে সম্পূর্ণ অনুমতি থাকবে।
কোবজিলা

ধন্যবাদ @rfcreader আমি এর ব্যয়টি কীভাবে অনুমান করতে পারি? আমি এডাব্লুএস কস্ট ক্যালকুলেটর সম্পর্কে সচেতন, তবে এই প্রক্রিয়াটি কীভাবে পিএসএস র অনুরোধের সংখ্যার সাথে জড়িত তা সম্পর্কে কোনও ধারণা নেই I আমি কল্পনা করি যে সিএলআই ব্যবহার করে এই মেট্রিকগুলি গণনা করা বেশ সহজ তবে আপনি যদি আরও জানেন তবে দয়া করে যোগাযোগ করুন। এডাব্লুএস সমর্থন "রিকোয়েস্টর পেইস" পরামর্শ দিয়েছে হা!
অলিভার বার্ডকিন

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

2

এডাব্লুএস সিএলআই সমান্তরাল প্রক্রিয়াগুলিতে একটি বালতি অন্য একটিতে অনুলিপি করার একটি উপায় সরবরাহ করে। Https://stackoverflow.com/a/40270349/371699 থেকে নেওয়া :

নিম্নলিখিত কমান্ডগুলি ডাব্লুএসএস সিএলআইকে কাজ সম্পাদন করতে 1000 টি থ্রেড (প্রতিটি ছোট ফাইল বা একাধিক কপির একটি অংশ) ব্যবহার করতে এবং 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

একটি এম 4.এক্সলেজ মেশিনে (এডাব্লুএস - 4 কোর, 16 গিগাবাইট র‌্যামে) সিঙ্ক / কপির গতি প্রায় 9.5MiB / s থেকে 700 + MiB / s এ চলে গেছে, এর গতি বৃদ্ধি পেয়েছে ডিফল্ট কনফিগারেশন 70x।


0

হারানো বালতিতে আপনি যে ফাইল (গুলি) অন্য একটি বালতিতে অনুলিপি করতে চান তা নির্বাচন করুন।

  • ক্রিয়াকলাপের অধীনে, 'অনুলিপি' নির্বাচন করুন।
  • লাভ বালতি যান।
  • ক্রিয়াকলাপের অধীনে, 'আটকানো' চয়ন করুন

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