উইজেট ব্যবহার করে এটিতে স্বেচ্ছাসেবী ফাইল সহ পুনরাবৃত্তভাবে ডিরেক্টরি আনতে


573

আমার একটি ওয়েব ডিরেক্টরি আছে যেখানে আমি কিছু কনফিগার ফাইল সংরক্ষণ করি। আমি সেই ফাইলগুলি নীচে টেনে আনতে এবং তাদের বর্তমান কাঠামো বজায় রাখতে উইজেট ব্যবহার করতে চাই। উদাহরণস্বরূপ, দূরবর্তী ডিরেক্টরিটি দেখে মনে হচ্ছে:

http://mysite.com/configs/.vim/

.vim একাধিক ফাইল এবং ডিরেক্টরি ধারণ করে। আমি উইজেট ব্যবহার করে ক্লায়েন্টে এটি প্রতিলিপি করতে চাই। এটি সম্পন্ন করার জন্য উইজেটের পতাকাগুলির সঠিক কম্বো খুঁজে পাওয়া যাবে না। কোন ধারনা?

উত্তর:


986

আপনি পাস করতে হবে -np/ --no-parentবিকল্প wget(ছাড়াও -r/ --recursive, অবশ্যই), অন্যথায় এটি ডিরেক্টরির সূচক লিংক পেরেন্ট ডাইরেক্টরি আমার সাইটে অনুসরণ করা হবে। সুতরাং কমান্ডটি এরকম দেখাচ্ছে:

wget --recursive --no-parent http://example.com/configs/.vim/

স্বয়ংক্রিয়ভাবে উত্পন্ন index.htmlফাইলগুলি ডাউনলোড করা এড়াতে -R/ --rejectবিকল্পটি ব্যবহার করুন :

wget -r -np -R "index.html*" http://example.com/configs/.vim/

52
add -nH (হোস্ট-নেম কেটে ফেলে) --cut-dirs = X (এক্স ডিরেক্টরি কেটে ফেলে)। এক্স এর জন্য ম্যানুয়ালি ডিরেক্টরিগুলি গণনা করা কিছুটা বিরক্তিকর
lkraav

3
W3.org/History/1991-WWW-NeXT/Implementation এর জন্য কেন এই কোনও কাজ করে না ? এটি কেবল
রোবটস.টেক্সট

31
@ মাত্তিও কারণ রোবটস টেক্সট সম্ভবত ওয়েবসাইট ক্রলিংয়ের অনুমতি দেয় না। ক্রলিং জোর করতে আপনার -e রোবটগুলি = বন্ধ করা উচিত।
চমত্কার

নির্দিষ্ট ডিরেক্টরি বাদ দিতে -এক্স / পরম / পথ / থেকে / ফোল্ডারে যুক্ত করুন
বিষ্ণু নারায়ণান

3
আপনি যদি পুরো বিষয়বস্তু ডাউনলোড করতে না চান তবে আপনি ব্যবহার করতে পারেন: -l1 কেবল ডিরেক্টরি ডাউনলোড করুন (উদাহরণস্বরূপ আপনার ক্ষেত্রে উদাহরণ ডটকম) -l2 ডিরেক্টরি এবং সমস্ত স্তরের 1 সাবফোল্ডার ডাউনলোড করুন ('উদাহরণস্বরূপ / কিছু' তবে না 'উদাহরণ.com/somoming/foo') এবং আরও। আপনি যদি নো-এল বিকল্পটি সন্নিবেশ করেন তবে উইজেটটি স্বয়ংক্রিয়ভাবে -l 5 ব্যবহার করবে। যদি আপনি একটি -l 0 সন্নিবেশ করেন তবে আপনি পুরো ইন্টারনেট ডাউনলোড করুন, কারণ উইজেট এটি খুঁজে পাওয়া প্রতিটি লিঙ্ক অনুসরণ করবে। stackoverflow.com/a/19695143/6785908
so-random-dude

123

পুনরাবৃত্তভাবে একটি ডিরেক্টরি ডাউনলোড করতে, যা হোস্ট নেম, প্যারেন্ট ডিরেক্টরি এবং সম্পূর্ণ ডিরেক্টরি কাঠামো ছাড়াই সূচিপত্র HTML ফাইল এবং ডাউনলোডগুলি প্রত্যাখ্যান করে:

wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data

আমি এটি কাজ করতে পারি না: wget -r -nH - কাট-ডায়ার্স = 3 - কোন পিতামাতার --reject = " সূত্রের html *" w3.org/History/1991-WWW-NeXT/ কার্যকরকরণ - -কুট-ডায়ার্স = 2 কোনওভাবেই কাজ করে না এটি কেবল রোবট.টেক্সট ডাউনলোড করে যা প্রকৃতপক্ষে রুট ফোল্ডারে রয়েছে। আমি কোথায় মিস করছি?
মাত্তেও

34
@ মাত্তেও যোগ করার চেষ্টা করুন: -e রোবটগুলি = বন্ধ
পল জে

ডিরেক্টরিগুলির মধ্যে সমস্ত ডিরেক্টরি পুনরাবৃত্তভাবে পেতে, উইজেট -r -nH --reject = "index.html *" mysite.ioament234
প্রশান্ত গণেশান

115

অন্য কারও জন্য একই সমস্যা রয়েছে। উইজেট অনুসরণ করে robots.txtযা আপনাকে সাইটটি দখল করতে দেয় না। কোনও উদ্বেগ নেই, আপনি এটি বন্ধ করতে পারেন:

wget -e robots=off http://www.example.com/

http://www.gnu.org/software/wget/manual/html_node/Robot-Exclusion.html


আপনি যখন রোবটস.টি.এস.টি উপেক্ষা করছেন তখন আপনার কমপক্ষে আপনার অনুরোধগুলি থ্রোট করা উচিত। এই উত্তরে প্রস্তাবিত আচরণটি অত্যন্ত অসম্পূর্ণ।
কেউ নেই

@ নোবডি তাই এর ভদ্র উত্তর কি?
ফানি ithত্বভিজ

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

37

আপনার -m (আয়না) পতাকাটি ব্যবহার করা উচিত, কারণ এটি টাইমস্ট্যাম্পগুলির সাথে জগাখিচুড়ি না করার এবং অনির্দিষ্টকালের জন্য পুনরাবৃত্তি করার যত্ন নেয়।

wget -m http://example.com/configs/.vim/

আপনি যদি এই থ্রেডে অন্যদের দ্বারা উল্লিখিত পয়েন্টগুলি যুক্ত করেন তবে এটি হবে:

wget -m -e robots=off --no-parent http://example.com/configs/.vim/

34

এখানে সম্পূর্ণ উইজেট কমান্ডটি যা আমার জন্য সার্ভারের ডিরেক্টরি থেকে ফাইলগুলি ডাউনলোড করার জন্য কাজ করেছে (উপেক্ষা করে robots.txt):

wget -e robots=off --cut-dirs=3 --user-agent=Mozilla/5.0 --reject="index.html*" --no-parent --recursive --relative --level=1 --no-directories http://www.example.com/archive/example/5.3.0/

8

যদি --no-parentসহায়তা না করে তবে আপনি --includeবিকল্পটি ব্যবহার করতে পারেন ।

ডিরেক্টরি কাঠামো:

http://<host>/downloads/good
http://<host>/downloads/bad

এবং আপনি ডাউনলোড করতে চান downloads/goodতবে downloads/badডিরেক্টরি নয় :

wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good


5

ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ পুনরাবৃত্তভাবে একটি ডিরেক্টরি আনার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/

2

উইজেট 1.18 আরও ভাল কাজ করতে পারে, উদাহরণস্বরূপ, আমি একটি সংস্করণ 1.12 বাগ দ্বারা কামড়েছি যেখানে ...

wget --recursive (...)

... সমস্ত ফাইলের পরিবর্তে কেবল সূচক html পুনরুদ্ধার করে।

ওয়ার্কআরউন্ডটি প্রায় 301 টি পুনর্নির্দেশগুলি লক্ষ্য করে নতুন অবস্থানটি চেষ্টা করে - নতুন ইউআরএল দেওয়াতে, উইজেট ডিরেক্টরিতে সমস্ত ফাইল পেয়েছিল।


2

আপনার যা দরকার তা দুই পতাকার অন্যতম হল, "-r"পুনরাবৃত্তির এবং জন্য "--no-parent"(অথবা -npঅনুক্রমে যেতে মধ্যে) '.'এবং ".." । এটার মত:

wget -r --no-parent http://example.com/configs/.vim/

এটাই. নিম্নলিখিত স্থানীয় গাছে ডাউনলোড করবে: ./example.com/configs/.vim। তবে আপনি যদি প্রথম দুটি ডিরেক্টরি না চান তবে --cut-dirs=2পূর্বের জবাবগুলিতে প্রস্তাবিত অতিরিক্ত পতাকা ব্যবহার করুন :

wget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/

এবং এটি আপনার ফাইল ট্রিটি কেবল এতে ডাউনলোড করবে ./.vim/

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


2

পুনরাবৃত্ত ডাউনলোডের সাথে ডিল করার সময় নিম্নলিখিত বিকল্পটি নিখুঁত সংমিশ্রণ বলে মনে হচ্ছে:

উইজেট-এনডি -এনপি -পি / ডেসট / দির - রিসার্সিভ http: // url / dir1 / dir2

সুবিধার জন্য ম্যান পৃষ্ঠা থেকে প্রাসঙ্গিক স্নিপেটগুলি:

   -nd
   --no-directories
       Do not create a hierarchy of directories when retrieving recursively.  With this option turned on, all files will get saved to the current directory, without clobbering (if a name shows up more than once, the
       filenames will get extensions .n).


   -np
   --no-parent
       Do not ever ascend to the parent directory when retrieving recursively.  This is a useful option, since it guarantees that only the files below a certain hierarchy will be downloaded.

1

আপনার কেবল একটি -r যোগ করে এটি করতে সক্ষম হওয়া উচিত

wget -r http://stackoverflow.com/

9
এটি সত্যিই কোনও ডিরেক্টরি ডাউনলোড করে না, তবে সার্ভারে এটি ডাউনলোড করতে পারে এমন সমস্ত ফাইল, যা আপনি ডাউনলোড করতে চান তার উপরে ডিরেক্টরি সহ।
লুক

1

এই সংস্করণটি পুনরাবৃত্তভাবে ডাউনলোড হয় এবং পিতামহুল ডিরেক্টরি তৈরি করে না।

wgetod() {
    NSLASH="$(echo "$1" | perl -pe 's|.*://[^/]+(.*?)/?$|\1|' | grep -o / | wc -l)"
    NCUT=$((NSLASH > 0 ? NSLASH-1 : 0))
    wget -r -nH --user-agent=Mozilla/5.0 --cut-dirs=$NCUT --no-parent --reject="index.html*" "$1"
}

ব্যবহার:

  1. ~/.bashrcটার্মিনালে যুক্ত করুন বা আটকান
  2. wgetod "http://example.com/x/"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.