আমি কীভাবে ওয়াইল্ডকার্ডগুলিকে AWS CLI- র একটি গ্রুপের ফাইল `সিপি` করতে পারি use


115

আমি ব্যবহার করতে সমস্যা হচ্ছে *নির্দিষ্ট বালতি থেকে ফাইলের একটি উপসেট নির্বাচন করতে আমার অ্যাডাব্লুএস সিএলআই ।

এর *মতো পথে যুক্ত করা কোনও কাজ বলে মনে হয় না

aws s3 cp s3://data/2016-08* .

উত্তর:


197

আপনার বর্তমান ডিরেক্টরির একটি আওস বালতি থেকে একাধিক ফাইলগুলি ডাউনলোড করতে, আপনি ব্যবহার করতে পারেন recursive, excludeএবং includeভালো পতাকা:

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"

কিভাবে এই ফিল্টার ব্যবহার করার জন্য আরও তথ্যের জন্য: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters


28
আমি উল্লেখ করতে চাই এটি --exclude "*"টাইপো নয়। আপনি যদি এটি যোগ না করেন তবে অন্তর্ভুক্তটি কোনও কিছুর সাথে মিলবে । ডকুমেন্টেশন অনুসারে: নোট করুন যে, ডিফল্টরূপে সমস্ত ফাইল অন্তর্ভুক্ত থাকে। এর অর্থ হ'ল কেবল একটি - অন্তর্ভুক্ত ফিল্টার সরবরাহ করা কোন ফাইল স্থানান্তরিত হবে তা পরিবর্তন করবে না। - অন্তর্ভুক্ত কেবল এমন ফাইলগুলিকে পুনরায় অন্তর্ভুক্ত করবে যা - এক্সক্লুড ফিল্টার থেকে বাদ দেওয়া হয়েছে। আপনি যদি কেবল একটি নির্দিষ্ট এক্সটেনশান সহ ফাইলগুলি আপলোড করতে চান তবে আপনাকে প্রথমে সমস্ত ফাইল বাদ দিতে হবে, তারপরে নির্দিষ্ট এক্সটেনশান সহ ফাইলগুলি পুনরায় অন্তর্ভুক্ত করুন।
pyb

8
বাদ দেওয়ার ক্রম সম্পর্কে সচেতন হন এবং পাশাপাশি অন্তর্ভুক্ত করুন।
কেইকি

4
আপনি syncঅনুরূপ প্রভাবের জন্যও ব্যবহার করতে পারেন , যা ডিফল্টরূপে পুনরাবৃত্তি হয়:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
২৯:১৮

"ডিস্ট্রাকটিভ" কমান্ডগুলি --dryrunপতাকাটির সাথে পরীক্ষা করে নেওয়া ভাল ধারণা যে অবজেক্টের সঠিক সেটটি ওয়াইল্ডকার্ড দ্বারা নির্বাচিত হয়েছে তা নিশ্চিত করার জন্য।
নিউফোলজিস্ট

59

পরামিতিগুলির বিষয়গুলির ক্রম

বাদ এবং অন্তর্ভুক্ত একটি নির্দিষ্ট ক্রমে ব্যবহার করা উচিত, আমাদের প্রথমে বাদ দিতে হবে এবং তারপরে অন্তর্ভুক্ত করতে হবে। এটির বৈপরীত্য সফল হবে না।

aws s3 cp s3://data/ . --recursive  --include "2016-08*" --exclude "*" 

এটি ব্যর্থ হবে কারণ এই ক্ষেত্রে পরামিতিগুলির অর্ডার ম্যাটর করে। অন্তর্ভুক্তগুলি * দ্বারা বাদ দেওয়া হয়েছে

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`

এইটি কাজ করবে কারণ আমরা সবকিছু বাদ দিয়েছি কিন্তু পরে আমরা নির্দিষ্ট ডিরেক্টরিটি অন্তর্ভুক্ত করেছি।


2

ঠিক আছে আমাকে বলতে হবে উদাহরণটি ভুল এবং নিম্নরূপে সংশোধন করা উচিত:

aws s3 cp . s3://data/ --recursive --exclude "*" --include "2006-08*" --exclude "*/*"

এর .পরে সঠিক হওয়া দরকার cp। চূড়ান্ত --excludeহ'ল নিশ্চিত করা যে কোনও উপ-ডিরেক্টরি থেকে যে কোনওটি বাছাই করে নি --recursive(যে ভুলের সাথে জেনে গেছে ...)

এটি এখানে আসার পরে এটির সাথে লড়াই করা যে কারও পক্ষে এটি কাজ করবে।


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