ডাউনলোড ফাইল উপর লেখা থেকে curl বন্ধ কিভাবে


1

আমি ব্যাবহার করছি

$ xargs -n 1 curl -O < gwurls.txt

ফাইল দীর্ঘ তালিকা দখল। দুর্ভাগ্যবশত, আমি যে জায়গাটি ধরে রাখছি সেটি অনন্যতার জন্য পাথর উপর নির্ভর করে -O মধ্যে পার্থক্য জানি না a/1.pdf এবং b/1.pdf এবং ফাইল clobbers।

এই কাছাকাছি একটি সহজ উপায় আছে?

উত্তর:


0

পদ্ধতির একটি দম্পতি:

  • করা umask 222 (অথবা umask 277, যদি আপনার উমস্ক বর্তমানে 77 হয়; যেমন, আপনার umask 200 যোগ করুন)। এটি আপনার সুরক্ষিত করা সমস্ত ফাইলকে কারণ করবে r-- (যাই হোক) পরিবর্তে rw- (যাই হোক) , তাই, একবার আপনি একটি ফাইল তৈরি করলে, আপনি এটির উপরে ওভাররাইট করতে পারবেন না chmod এটি প্রথমে প্রবেশ করান (যদি না আপনি রুট হিসাবে চলমান হয়)। এটি আপনার শিরোনামে আপনি যে প্রশ্নটি উত্থাপিত করেছেন তার উত্তর দেয়, তবে এটি আসলে আপনার সমস্যার সমাধান করে না; এটি শুধু আপনি সফলভাবে ডাউনলোড এবং বজায় রাখা হবে a/1.pdf এবং মিস করবেন b/1.pdfবরং কাছাকাছি অন্য উপায়। (যদি এটি কোনও সান্ত্বনা দেয়, তবে সংঘর্ষে আপনাকে সতর্ক করে দেওয়া ত্রুটি বার্তাগুলি পাবেন।)
  • সমস্যা আপনার মধ্যে মিথ্যা বলে মনে হয় gwurls.txt ফাইল, naïvely উভয় তালিকা যা a/1.pdf এবং b/1.pdf, তাই সেখানে এটি ঠিক করার চেষ্টা করুন। সঙ্গে এটি মঙ্গল sed অথবা কিছু দেখতে চাই
  a/1.pdf    a_1.pdf
  b/1.pdf    b_1.pdf

... এবং তারপর চালানো একটি স্ক্রিপ্ট লিখুন curl একটি ইউআরএল সঙ্গে $1 এবং একটি আউটপুট স্পেসিফিকেশন $2, এবং চালানো

  xargs -n 2 your_script < modified_gwurls.txt

সুতরাং xargs চলবে

your_script a/1.pdf  a_1.pdf
your_script b/1.pdf  b_1.pdf

এই ফাইলগুলির মধ্যে কোনও হোয়াইটস্পেস থাকে তবে এটি নোংরা হয়ে যায় - কিন্তু আমি মনে করি URL গুলির জন্য এটি সম্ভব নয়, তাই না?


আমি সম্পূর্ণরূপে কার্ল কল উপর দৃষ্টি নিবদ্ধ করা এবং স্প্র্যাপ সংশোধন ছিল, যা সুস্পষ্ট এড়াতে। দৃষ্টিকোণ জন্য ধন্যবাদ।
PHPeer

0

wget

দ্বারা সহজতম সমাধান হবে Wget ইনস্টল করা এবং নিম্নলিখিত কমান্ড কার্যকর:

wget --input-file=gwurls.txt

একই নামের একটি ফাইল ইতিমধ্যে বিদ্যমান থাকলে Wget স্বয়ংক্রিয়ভাবে আউটপুট ফাইল নামকরণ করে।

পুনঃনামকরণ করা

আপনি যদি স্কিম এবং হোস্ট স্ট্রিপ করেন (উদাঃ, http://example.com/ ) ইউআরএল থেকে, আপনি আন্ডারস্কোর (অথবা অন্য কোন অক্ষর) সহ সমস্ত স্ল্যাশ প্রতিস্থাপন করতে পারেন এবং ফাইলগুলি সেভাবে সংরক্ষণ করতে পারেন। নিরাপদ দিকে থাকার জন্য, আপনি দ্বি underscores সঙ্গে প্রাক ex excoresres প্রতিস্থাপন করতে পারে।

Bash সঙ্গে, এই কাজ করা উচিত:

while read -r URL; do
    OUTPUT="${URL#http://example.com/}"
    OUTPUT="${OUTPUT//_/__}"
    OUTPUT="${OUTPUT//\//_}"

    curl --output "$OUTPUT" --url "$URL"
done < gwurls.txt

কিভাবে এটা কাজ করে:

  • while read -r URL; do ... done < gwurls.txt বিষয়বস্তু পড়া gwurls.txt লাইন দ্বারা লাইন এবং পরিবর্তনশীল মধ্যে সমগ্র লাইন (নেতৃস্থানীয় বা পিছনের স্পেস ছাড়া) সঞ্চয় URL টি এবং executes ...

  • তিন OUTPUT=... কমান্ড ব্যবহার করে উল্লিখিত প্রতিস্থাপন সঞ্চালন ব্যাশ স্ট্রিং ম্যানিপুলেশন

  • curl --output "$OUTPUT" --url "URL" ফাইল ডাউনলোড করুন এবং পছন্দসই ফাইল নাম দিয়ে এটি সঞ্চয়।

ডিরেক্টরি গঠন

একই পদ্ধতি ব্যবহার করে সার্ভারের ডিরেক্টরি গঠন পুনরায় তৈরি করাও সম্ভব।

Bash সঙ্গে, এই কাজ করা উচিত:

while read -r URL; do
    OUTPUT="${URL#http://example.com/}"

    curl --create-dirs --output "$OUTPUT" --url "$URL"
done < gwurls.txt

এখানে --create-dirs সুইচ curl ডিরেক্টরি তৈরি করে তোলে a যদি আউটপুট সার্চ a/1.pdf


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