ডাব্লু স্ট্রিং স্ট্রাকচারটি এডাব্লু এস এস বালতিতে অক্ষত


38

আমি একটি এস 3 বালতিতে একটি সম্পূর্ণ ডিরেক্টরি কাঠামো অনুলিপি করতে AWS S3 ক্লিপটি ব্যবহার করতে চাই।

এখনও অবধি, আমি চেষ্টা করেছি সবকিছু বালতিতে ফাইলগুলি অনুলিপি করে, তবে ডিরেক্টরি কাঠামোটি ধসে পড়েছে। (এটি অন্যভাবে বলতে গেলে প্রতিটি ফাইলই বালতির মূল ডিরেক্টরিতে অনুলিপি করা হয়)

আমি যে আদেশটি ব্যবহার করি তা হ'ল:

aws s3 cp --recursive ./logdata/ s3://bucketname/

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


3
হ্যাঁ! এটি অবশ্যই উত্তর। ইউনিক্সের বিপরীতে, সিপি কমান্ড (এবং সিঙ্ক কমান্ড) গন্তব্যের পাশে কোনও লক্ষ্য ডিরেক্টরি তৈরি করবে না যতক্ষণ না আপনি তাদের এটি করতে বলবেন। আপনি যদি aws s3 cp --recursive mylocalsrcdir s3://bucket/এটি করেন তবে এটি কেবল আপনার স্থানীয় সংগ্রহস্থলগুলিতে বালতি "রুট ডিরেক্টরি" তে রেখে দেবেন যদি আপনি তা করেন aws s3 cp --recursive mydirectory s3://bucket/mydirectoryতবে এটি লক্ষ্যের শেষে ডিরেক্টরি কাঠামোটি পুনরায় তৈরি করবে।
এজেন্টভি

উত্তর:


37

আমার বিশ্বাস সিঙ্ক হ'ল আপনার পছন্দ পদ্ধতি। পরিবর্তে এটি চেষ্টা করুন:

aws s3 sync ./logdata s3://bucketname/

4
... আমি এটি চেষ্টা করতে আগ্রহী, কিন্তু এটি আমাকে সিপি কমান্ডের মতো একই ফলাফল দিয়েছে। আমার ./logfiles ডিরেক্টরি থেকে ফাইলগুলি বালতিতে মূল "ডিরেক্টরিতে" অনুলিপি করা হয়েছিল। একটি জিনিস যা কাজ করেছিল তা হ'ল চেষ্টা করার চেষ্টা: aws s3 sync ./logdata s3://bucketname/logdata নেতৃত্বের জন্য ধন্যবাদ। --- ভি
এজেন্টভ

দুর্ভাগ্যক্রমে, এমনকি আপনার প্রস্তাবিত এজেন্টভের সাথেও আমি পেয়েছি একই ফলাফলের সিঙ্কটি ডিরেক্টরি কাঠামো সংরক্ষণ করে না এবং কেবল সমস্ত কিছুকে সমতল করে।
নিহারভে

আপডেট * - আমার ডিরেক্টরি কাঠামোটি এক্সট্রাক্টে
গণ্ডগোল

9

আমি এই কমান্ডগুলির কোনও ব্যবহার করার সময় এই ত্রুটির মুখোমুখি হয়েছি ।

$ aws s3 cp --recursive /local/dir s3://s3bucket/
OR
$ aws s3 sync /local/dir s3://s3bucket/

আমি এমনকি স্থানীয়ভাবে এস 3 বালতি মাউন্ট করার কথা চিন্তা করেছিলাম এবং তারপরে আরএসসিএনসি চালিয়েছি, এমনকি এটি ব্যর্থ হয়েছে (বা কয়েক ঘন্টা ধরে স্তব্ধ হয়ে গেছে) আমার কাছে হাজার হাজার ফাইল আছে।

অবশেষে, s3cmd একটি কবজির মতো কাজ করেছে।

s3cmd sync /local/dir/ --delete-removed s3://s3bucket/ --exclude="some_file" --exclude="*directory*"  --progress --no-preserve

এটি কেবল কাজটি ভালভাবেই করে না এবং কনসোলে বেশ ভার্বোজ আউটপুট দেখায়, তবে অংশগুলিতে বড় ফাইলগুলিও আপলোড করে।


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

এটি দরকারী ব্র্যাডচেসনি --৯
এজেন্টভি

আপনি সিঙ্ক কমান্ডে যে বিকল্পগুলি ব্যবহার করছেন তা বর্ণনা করা ভাল। এছাড়াও s3cmd এর জন্য কোনও "সিপি" কমান্ড নেই? সিপির পরিবর্তে সিঙ্ক কেন ব্যবহার করবেন?
ভিনগারিয়া

4

নিম্নলিখিত আমার জন্য কাজ করেছে:

aws s3 cp ~/this_directory s3://bucketname/this_directory --recursive

এডাব্লুএস this_directoryএর পরে স্থানীয় সমস্ত বিষয়বস্তুকে "তৈরি" করে এবং অনুলিপি করবে।


2

ফোল্ডার গঠন অনুলিপি করার জন্য নিম্নলিখিত স্ক্রিপ্ট ব্যবহার করুন:

s3Folder="s3://xyz.abc.com/asdf";

for entry in "$asset_directory"*
do
    echo "Processing - $entry"
    if [[ -d  $entry ]]; then
        echo "directory"
        aws s3 cp  --recursive "./$entry" "$s3Folder/$entry/"
    else
        echo "file"
        aws s3 cp "./$entry" "$s3Folder/"
    fi
done

2

আমি পেতে না পারে s3 syncবা s3 cpফাইল হাজার হাজার ভিতরে উপর 2 ডজন সাবডিরেক্টরি সঙ্গে একটি 55 গিগাবাইট ফোল্ডারে কাজ। পুরো ফোল্ডারটি সিঙ্ক করার চেষ্টা করলে বালতিতে কিছু আপলোড না করে চুপচাপ ব্যর্থ হওয়ার কারণ হয়ে উঠবে।

প্রথমে সমস্ত উপ-ডিরেক্টরি এবং তাদের বিষয়বস্তু সিলেক্ট করার জন্য এটি শেষ হয়েছিল (ফোল্ডার কাঠামো সংরক্ষণ করা হয়েছে):

nice find . -mindepth 1 -maxdepth 1 -type d | cut -c 3- | while read line; do aws s3 sync $"$line" "s3://bucketname/$line"; done

তারপরে আমি শীর্ষ স্তরে 30,000 ফাইলগুলি পেতে এটি করেছি:

nice find . -mindepth 1 -maxdepth 1 -type f | cut -c 3- | while read line; do aws s3 cp "$line" "s3://bucketname/";

সার্ভারে লোডটি দেখার বিষয়টি নিশ্চিত করুন ( wআপনি কেবল লোডটি দেখানোর জন্য ব্যবহার করতে পারেন ) এবং ctrl-zলোড খুব বেশি হলে কমান্ড স্থগিত করুন। ( fgএটি আবার চালিয়ে যেতে)

এটি এখানে একইভাবে রাখা যদি এটি একই পরিস্থিতিতে কাউকে সহায়তা করে।

নোট:

-mindepth 1 বাদ .

-maxdepth 1সাব-ডিরেক্টরিগুলির বিষয়বস্তু তালিকাবদ্ধকরণ থেকে সন্ধানগুলি প্রতিরোধ করে, যেহেতু s3 syncসেগুলি সফলভাবে পরিচালনা করে।

cut -c 3- অনুসন্ধান থেকে প্রতিটি ফলাফলের শুরু থেকে "./" সরান।


1

বিকল্পভাবে আপনি মিনিও ক্লায়েন্ট ওরফে এমসি চেষ্টা করে দেখতে পারেন

$ mc cp Desktop/test/test/test.txt s3/miniocloud/Desktop/test/test/

আশা করি এটি সাহায্য করবে।

পিএস: আমি এই প্রকল্পের অন্যতম অবদানকারী।


1
ক্রেডিট যেখানে creditণ জমা আছে: এমসি কাজটি করেছে এবং দির কাঠামো সংরক্ষণ করেছে - দুর্দান্ত! অ্যাসস্ক্লি ব্যবহার করতে এবং এখানে পড়তে পড়তে আমি পাইথন ও পাইপ ক্রেপের 200 মেগাবাইট ইনস্টল করতে ইতিমধ্যে
পরাজিত হয়েছি

0

( শিশিরের সমাধানের উন্নতি )

  • নিম্নলিখিত স্ক্রিপ্টটি একটি ফাইলে সংরক্ষণ করুন (আমি ফাইলটির নাম দিয়েছি s3Copy.sh)
path=$1 # the path of the directory where the files and directories that need to be copied are located
s3Dir=$2 # the s3 bucket path

for entry in "$path"/*; do
    name=`echo $entry | sed 's/.*\///'`  # getting the name of the file or directory
    if [[ -d  $entry ]]; then  # if it is a directory
        aws s3 cp  --recursive "$name" "$s3Dir/$name/"
    else  # if it is a file
        aws s3 cp "$name" "$s3Dir/"
    fi
done
  • এটি নিম্নরূপে চালান:
    /PATH/TO/s3Copy.sh /PATH/TO/ROOT/DIR/OF/SOURCE/FILESandDIRS PATH/OF/S3/BUCKET
    উদাহরণস্বরূপ যদি s3Copy.shহোম ডিরেক্টরিতে সঞ্চিত থাকে এবং আমি বর্তমান ডিরেক্টরিতে অবস্থিত সমস্ত ফাইল এবং ডিরেক্টরিগুলি অনুলিপি করতে চাই, তবে আমি এটি চালাচ্ছি:
    ~/s3Copy.sh . s3://XXX/myBucket

আপনি সহজেই অন্যান্য আর্গুমেন্ট মঞ্জুর করার জন্য স্ক্রিপ্ট পরিবর্তন করতে পারেন s3 cpযেমন --include, --exclude...


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