অ্যামাজন এস 3 এ প্রদত্ত এক্সটেনশনের ফাইলগুলির জন্য পুনরাবৃত্তভাবে সামগ্রী-ধরণের পরিবর্তন করা


12

আমার কাছে নেস্টেড "ফোল্ডার" স্ট্রাকচার সহ একটি বড় এস 3 বালতি রয়েছে (অন্যান্য জিনিসের মধ্যে) স্ট্যাটিক .json এবং .md ফাইল রয়েছে। থিসিস ফাইলগুলি text/plainসঠিক application/jsonও এর চেয়ে এস 3 দ্বারা পরিবেশন করা হচ্ছে text/markdown

আমি বালতি ডিফল্ট আপডেট করেছি যাতে নতুন আপলোডগুলিতে সঠিক সামগ্রীর ধরণ থাকে।

"ট্রি" হাঁটতে এবং নির্দিষ্ট বর্ধনের সাথে মিলে যাওয়া ফাইলগুলির জন্য সামগ্রী ধরণের আপডেট করার সর্বোত্তম উপায় কী?

উত্তর:


25

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

aws s3 cp \
      --exclude "*" \
      --include "*.svg" \
      --content-type="image/svg+xml"  \
      --metadata-directive="REPLACE" \
      --recursive \
      --dryrun \
       s3://mybucket/static/ \
       s3://mybucket/static/

আমি কমান্ডের অন্তর্নিহিত ধারণাটি বুঝতে পারি। তবে এটি কি ফাইলটির সংস্করণগুলি মুছে ফেলবে কারণ এটি প্রতিস্থাপনের নির্দেশিকা? আমার বালতি সংস্করণ সহ কনফিগার করা হয়েছে এবং প্রতিটি ফাইলের কিছু সংস্করণ রয়েছে। এটি প্রতিস্থাপন করা সমস্ত সংস্করণ মুছে ফেলবে এবং একটি নতুন ফাইল তৈরি করবে বা প্রতিস্থাপনের সময় এটি সমস্ত সংস্করণ অ্যাকাউন্টে নেবে?
জোজে

এটা একটা ভালো প্রশ্ন. একটি নিক্ষেপ বালতি একটি পরীক্ষা অবশ্যই মূল্যবান। আমার আশা এই যে কেবলমাত্র মেটাডেটা প্রতিস্থাপনের অনুরোধটি সংস্করণগুলিকে উড়িয়ে দেবে না ...
t1m0

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

এই কমান্ডটি acl পুনরায় সেট করে। যদি আপনার অ-ডিফল্ট মান প্রয়োজন হয় তবে যোগ করুন--acl=...
ভাসিলি জাভেরেভ

3

আপনি বোটো / পাইথন বা অন্য এডাব্লুএস এপিআই ব্যবহার করে আপনার হাতকে নোংরা করতে না চাইলে আমার সন্দেহ হয় যে আপনার সামগ্রীর জন্য নতুন বিষয়বস্তুর ধরণটি স্থির করে কোনও বস্তু নিজেই অনুলিপি করার $ aws s3api copy-objectজন্য --content-typeপতাকা ব্যবহার করা ভাল best

S3api এর জন্য ডকুমেন্টেশন এখানে ।

এটি আপনার পুরো বালতিতে পুনরাবৃত্তভাবে চালানোর আগে আপনার প্রথমে এটি পরীক্ষা করা উচিত বলে ছাড়াই যায়।


1
পরীক্ষার বিষয়ে, অ্যামাজন সি এল এলিতে "ড্রাই ড্রাই" পতাকাটি ব্যবহার করুন।
বার্ট

3

কিছু খনন করার পরে, আমি আবিষ্কার করেছি যে s3cmdসরঞ্জামটি এটি করতে পারে। উদাহরণস্বরূপ, JSON ফাইলগুলিকে অ্যাপ্লিকেশন / জেসসনে সেট করতে:

s3cmd --recursive modify --acl-public \
       --add-header='content-type':'application/json' \
       --exclude '' --include '.json' \
       s3://bucket/

3

পূর্বে উল্লিখিত হিসাবে, আপনি awsঅ্যামাজন দ্বারা সরঞ্জাম ব্যবহার করতে পারেন এবং অনুলিপি করার জন্য s3api নিজেই অনুলিপি করতে metadata-directive=REPLACEপারেন এবং বিষয়বস্তুর ধরণ পরিবর্তন করতে পারেন ।

আমি এটি এখানে রাখছি, কারণ কখনও কখনও আপনি ফাইলের নামগুলি পুনরাবৃত্তি করতে চান যা ডাটাবেসে সঞ্চিত থাকে এবং আপনি ক্লাইমের মাধ্যমে এটি কীভাবে করতে পারেন।

aws s3api copy-object \
          --content-type="application/vnd.android.package-archive" \
          --metadata-directive="REPLACE" \
          --copy-source "MYBUCKET/FILE.apk" \
          --bucket "MYBUCKET" \
          --key "FILE.apk" \
          --acl public-read

এটি কেবল একটি ফাইল প্রতিস্থাপন করে। .Apk টাইপের সমস্ত ফাইলের বিরুদ্ধে আপনি এই আদেশটি কীভাবে কার্যকর করবেন?
বার্ট

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