উইজেট ব্যবহার করে একাধিক একযোগে ডাউনলোড?


207

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

আমি কীভাবে 4 একযোগে সংযোগ ব্যবহার করে উইজেট ডাউনলোড করতে পারি?


4
একটা চমৎকার সমাধান সঙ্গে অনুরূপ একটি প্রশ্ন: stackoverflow.com/questions/7577615/parallel-wget-in-bash
JohnEye

এই প্রকল্পটি একবার দেখুন github.com/rockdaboot/wget2
user9869932

উত্তর:


197

aria2 ব্যবহার করুন:

aria2c -x 16 [url]
#          |
#          |
#          |
#          ----> the number of connections 

http://aria2.sourceforge.net

আমি এটা ভালোবাসি !!


26
আমি দেখতে পাচ্ছি না এটি কীভাবে কোনও ওয়েবসাইট ডাউনলোড করতে সহায়তা করে - দেখে মনে হচ্ছে এটি কেবল 1 ফাইল ডাউনলোড করে। যদি এটি সত্য হয় - ভোটগুলি হওয়া উচিত।
স্টিফেন

8
আমি সম্মত, এটি একটি ভাল উত্তর নয়, কারণ এরিয়া 2 ওয়েবে বা এলএফটিপি এর মতো ওয়েব বা ftp মিররিং করতে পারে না। lftp একাধিক সংযোগ সমর্থন করার পাশাপাশি মিররিংও করে।
Anachronist

9
স্প্লিটের -sসংখ্যা নির্দিষ্ট করতে এবং -kপ্রতি বিভক্ত বিভাগে ন্যূনতম আকার নির্দিষ্ট করতে ভুলবেন না - অন্যথায় আপনি কখনই -xসর্বোচ্চ সংযোগগুলিতে পৌঁছতে পারবেন না ।
বব

2
@ স্টেফেন হ'ল একাধিক সকেট একের পরিবর্তে একাধিক সকেট ব্যবহার করে ওয়েবসাইটগুলি থেকে খুব দ্রুত ফাইল ডাউনলোড করা । এটি কোনও ওয়েবসাইট স্ক্র্যাপ করার জন্য নয়।
গ্যাবিও

মোজা সমর্থন করে না *
ফেডকম্প

111

ফাইল ডাউনলোডের গতি বাড়ানোর জন্য উইজেট একাধিক সকেট সংযোগগুলি সমর্থন করে না।

আমি মনে করি gmarian উত্তর চেয়ে আমরা কিছুটা ভাল করতে পারি।

সঠিক উপায়টি ব্যবহার করা aria2

aria2c -x 16 -s 16 [url]
#          |    |
#          |    |
#          |    |
#          ---------> the number of connections here

19
নথি করতে -x, --max-connection-per-server=NUM The maximum number of connections to one server for each download. Possible Values: 1-16 Default: 1এবং-s, --split=N Download a file using N connections. If more than N URIs are given, first N URIs are used and remaining URLs are used for backup. If less than N URIs are given, those URLs are used more than once so that N connections total are made simultaneously. The number of connections to the same host is restricted by the --max-connection-per-server option. See also the --min-split-size option. Possible Values: 1-* Default: 5
নিক

প্যারামিটারগুলি বিশদ দেওয়ার জন্য ধন্যবাদ, নিক।
থমাস.হান

4
বিকল্পগুলির একা একা সার্ভার থেকে ১.১০ প্রকাশের পরে কোনও ফাইল বিভক্ত হবে না। একাধিক সংযোগ স্থাপনের জন্য জোর করে এক সাথে - ম্যাক্স-সংযোগ-প্রতি-সার্ভার ব্যবহার করা প্রয়োজন। Aria2 ডকুমেন্টেশন দেখুন: About the number of connections Since 1.10.0 release, aria2 uses 1 connection per host by default and has 20MiB segment size restriction. So whatever value you specify using -s option, it uses 1 connection per host. To make it behave like 1.9.x, use --max-connection-per-server=4 --min-split-size=1M.
স্যামুয়েল লি

1
@ স্যামুয়েললির আপডেটটির সংক্ষিপ্ত বিবরণটি aria2c -x 4 -k 1M urlআমার পক্ষে ভাল কাজ করেছে (সংযোগ প্রতি 100 কিলোমিটারের একটি সীমা সহ একটি সার্ভার আমাকে বলা প্যারামিটারগুলি দিয়ে
400k

সমালোচকভাবে, পুনরাবৃত্ত এইচটিটিপি ডাউনলোডগুলি সমর্থন aria2করে না , এটি wgetযদি প্রয়োজন -rহয় তবে এটি মানহীন প্রতিস্থাপন করে ।
ব্যবহারকারী 2943160

55

যেহেতু জিএনইউ সমান্তরালটির এখনও উল্লেখ করা হয়নি, তাই আমাকে আরও একটি উপায় দিন:

cat url.list | parallel -j 8 wget -O {#}.html {}

5
এটি আকর্ষণীয় পদ্ধতির। যখন আপনাকে একটি বিশাল ফাইল ডাউনলোড করা প্রয়োজন এবং আপনি প্রতি সংযোগের জন্য সীমাবদ্ধ গতি পান তখন সত্যিই প্রযোজ্য নয়, তবে একাধিক ফাইল ডাউনলোড করার সময় কার্যকর হতে পারে।
নিকোলা পেটকানস্কি

এই কমান্ডটি চালানো কি তালিকাটি 8 বার চালাবে, না? আমি এটি একইভাবে করেছি এবং 8 টি সমান্তরাল দিয়ে প্রতিটি লাইন প্রক্রিয়া করার পরিবর্তে, এটি 8 বার পুরো তালিকাটি প্রসেস করে।
ডোমেনস ফিচার

4
না, এটি 8 টি কাজের তালিকায় বিভক্ত
নিকোলে শ্মেরেভ

ঠিক আছে, আমি অবশ্যই অদ্ভুত কিছু করছি। এটি নির্ধারণ করা হবে। দ্রুত সাড়া দেওয়ার জন্য ধন্যবাদ।
ডোমেইনস

1
যদিও এটির অকেজো ব্যবহারcat । এই সীমিত প্রসঙ্গে, এটি বেশ নিরীহ, তবে সম্ভবত আপনি এই অ্যান্টিপ্যাটার্নটি চালাতে চান না।
ট্রিপলি

39

আমি (সম্ভবত) একটি সমাধান খুঁজে পেয়েছি

এক সার্ভার থেকে পরের দিকে কয়েক হাজার লগ ফাইলগুলি ডাউনলোড করার প্রক্রিয়ায় হঠাৎ আমার বিএসডি-তে কিছু গুরুতর মাল্টিথ্রেডড ডাউনলোডিং করার দরকার হয়েছিল, প্রায়শই উইজেটের সাথে আমি এটিকে হ্যান্ডেল করার কথা ভাবতে পারি এমন সহজ উপায়। চারপাশে একটু তাকাতে গিয়ে আমাকে এই ছোট্ট নকশাতে নিয়ে গেল:

wget -r -np -N [url] &
wget -r -np -N [url] &
wget -r -np -N [url] &
wget -r -np -N [url]

আপনার wget -r -np -N [url]যতটুকু থ্রেডের প্রয়োজন কেবল পুনরাবৃত্তি করুন ... এখন দেওয়া এটি সুন্দর নয় এবং অবশ্যই এটি করার আরও ভাল উপায় আছে তবে আপনি যদি দ্রুত এবং নোংরা কিছু চান তবে এটি কৌশলটি করা উচিত ...

বিঃদ্রঃ: বিকল্পটি কেবল "নতুন" ফাইলগুলি ডাউনলোড করে -Nতোলে wgetযার অর্থ সার্ভারে টাইমস্ট্যাম্প পরিবর্তিত না হলে ফাইল ওভাররাইট বা পুনরায় ডাউনলোড করতে পারে না won't


11
কিন্তু এটি কি প্রতিটি প্রক্রিয়াটির জন্য সম্পূর্ণ শিল্পকর্মের সেটটি ডাউনলোড করে না?
কাই ম্যাটার্ন

10
@ কাইম্যাটারন: -ncবিকল্পটি যুক্ত করুন : "কোনও ক্লোবার নেই" - এটি উইজেটের কারণে অযাডি ডাউনলোড করা (এমনকি আংশিক) ফাইলগুলিকে উপেক্ষা করতে পারে।
এসএফ

1
আমার ডাউনলোড করার জন্য আমার প্রয়োজনীয় চিত্রগুলির একটি তালিকা ছিল এবং এটি আমার পক্ষেও কাজ করেছিল: wget -i list.txt -nc & wget -i list.txt -nc & wget -i list.txt -ncখুব কুরুচিপূর্ণ, তবে ওহে, এটি কার্যকর হয়। : পি
জারেড

1
এই সংযোগগুলির মধ্যে একটির কোনও কারণে নষ্ট হয়ে যাওয়া আপনাকে অন্য সংযোগগুলির দ্বারা স্পর্শ না করেই অসম্পূর্ণ ফাইল দেয়। এই পদ্ধতিটি অখণ্ডতার বিষয়গুলি তৈরি করে।
মুহাম্মাদভ

-bপতাকা, ব্যাকগ্রাউন্ডে wget হয় প্রক্রিয়া চালানো হবে ব্যাশ এর বিকল্প হিসেবে &কাজ বিল্ট-ইন নিয়ন্ত্রণ। STDOUT -o <filename>নির্দিষ্ট করা না থাকলে উইজেট-লগতে লেখা হবে । স্ক্রিপ্টিং জন্য ভাল। আরও তথ্যের জন্য উইজেট (1) দেখুন।
পল

21

এটি করতে পারে এমন আরেকটি প্রোগ্রাম axel

axel -n <NUMBER_OF_CONNECTIONS> URL

বেসিক এইচটিটিপি আথের জন্য,

axel -n <NUMBER_OF_CONNECTIONS> "user:password@https://domain.tld/path/file.ext"

উবুন্টু ম্যান পেজ


5
এই প্রোগ্রামটি সীমিত সংখ্যক সংযোগের অনুমতি দেয় যা কিছু ক্ষেত্রে খুব কার্যকর useful
uglide

1
দুর্দান্ত সরঞ্জাম জন্য centos6.xi ব্যবহৃত rpm.pbone.net/index.php3/stat/4/idpl/16390122/dir/redhat_el_6/...
satch_boogie

অ্যাক্সেল এইচটিটিপি বেসিক
লেখাগুলি

1
আমি সাধারণত করিaxel -n 4 "user:pasword@http://domain.tld/path/file.ext"
লর্ড লোহ।

পুনরাবৃত্তভাবে পুরো ফোল্ডারটি ডাউনলোড করার জন্য আমি কী অক্ষ ব্যবহার করতে পারি?
রায়ান সংক্ষিপ্ত বিবরণ

17

একটি নতুন (তবে এখনও প্রকাশ হয়নি) সরঞ্জামটি হ'ল মেজেট । এটি ইতিমধ্যে উইজেট থেকে প্রচুর অপশন পরিচিত এবং এটি একটি লাইব্রেরির সাথে আসে যা আপনাকে সহজেই আপনার নিজের অ্যাপ্লিকেশনটিতে এম্বেড (পুনরাবৃত্ত) ডাউনলোড করতে দেয়।

আপনার প্রশ্নের উত্তর দিতে:

mget --num-threads=4 [url]

হালনাগাদ

অনেক বাগ ঠিক করা এবং আরও বেশি বৈশিষ্ট্যযুক্ত (যেমন HTTP / 2 সমর্থন) সমেত Mget এখন Wget2 হিসাবে বিকাশিত

--num-threadsএখন --max-threads


ভাল লাগছে। ধন্যবাদ!
ব্যবহারকারী9869932

ম্যাকের উপর wget2 ইনস্টল করার জন্য কোনও পরামর্শ? সাইটটি কেবল এটি উত্স থেকে কীভাবে ইনস্টল করবেন এবং স্বনিযুক্তি পেতে সমস্যায় পড়তে পারে তার দস্তাবেজগুলি
ক্রিস

ট্র্যাভিসিসিআই স্ক্রিপ্ট-এ আমরা গেটেক্সটেক্স ইনস্টল করতে হোমব্রু ব্যবহার করি (যার মধ্যে স্ব-পয়েন্ট অন্তর্ভুক্ত থাকে)। Wget2 রেপো থেকে .travis_setup.sh এ দেখুন।
রকডববুট

13

আমি দৃ strongly়ভাবে httrack ব্যবহার করার পরামর্শ দিচ্ছি।

উদা: httrack -v -w http://example.com/

এটি ডিফল্ট হিসাবে 8 যুগপত সংযোগের সাথে একটি আয়না করবে। Httrack যেখানে খেলতে হবে অনেকগুলি বিকল্প রয়েছে where একবার দেখুন।


@ aaa90210: আপনি যদি প্রোগ্রামগুলির ঘাটতিগুলি দৃ suc়ভাবে ব্যাখ্যা করতে চান তবে এটি দুর্দান্ত হবে। আর্তুরবোদার মন্তব্যটি অনেক বেশি তথ্যবহুল।
রিচার্ড

@ আর্টুরবোডেরা আপনি যে ফোল্ডারে আপনার প্রোগ্রামটি চালাচ্ছেন সেই ফোল্ডারে আপনি কুকিএস.টিএসটিএল ফাইল যুক্ত করতে পারেন এবং এটি স্বয়ংক্রিয়ভাবে ডাউনলোডের শিরোনামে এই কুকিগুলিকে যুক্ত করবে।
বার্টনসেলজ 1

httrack নিম্নলিখিত পুনঃনির্দেশগুলি সমর্থন করে না
ক্রিস হান্ট

11

অন্যান্য পোস্টারগুলি যেমন উল্লেখ করেছে, আমি আপনাকে এরিয়া 2 এ একবার দেখার পরামর্শ দিই । সংস্করণ 1.16.1 এর জন্য উবুন্টু ম্যান পৃষ্ঠা থেকে:

ফাইল ডাউনলোড করার জন্য aria2 একটি ইউটিলিটি। সমর্থিত প্রোটোকল হ'ল এইচটিটিপি (এস), এফটিপি, বিটরেন্ট এবং মেটালিংক। aria2 একাধিক উত্স / প্রোটোকল থেকে একটি ফাইল ডাউনলোড করতে পারে এবং আপনার সর্বাধিক ডাউনলোড ব্যান্ডউইদথ ব্যবহার করার চেষ্টা করে। এটি একই সময়ে এইচটিটিপি (এস) / এফটিপি এবং বিটোরেন্ট থেকে একটি ফাইল ডাউনলোড সমর্থন করে, যখন এইচটিটিপি (এস) / এফটিপি থেকে ডাউনলোড করা ডেটা বিটটোরেন্ট জলাখলে আপলোড করা হয়। মেটালিংকের খণ্ড চেকসামগুলি ব্যবহার করে, বিটটোরেন্টের মতো কোনও ফাইল ডাউনলোড করার সময় আরিয়া 2 স্বয়ংক্রিয়ভাবে ডেটার সংস্থাগুলি যাচাই করে।

আপনি -xপ্রতি সার্ভারে সংযোগের সর্বাধিক সংখ্যা নির্দিষ্ট করতে পতাকাটি ব্যবহার করতে পারেন (ডিফল্ট: 1):

aria2c -x 16 [url] 

যদি একই ফাইলটি একাধিক অবস্থান থেকে উপলব্ধ থাকে তবে আপনি সেগুলি থেকে ডাউনলোড করতে বেছে নিতে পারেন। -jপ্রতিটি স্ট্যাটিক ইউআরআই (ডিফল্ট: 5) এর জন্য সর্বাধিক সংখ্যক সমান্তরাল ডাউনলোড নির্দিষ্ট করতে পতাকা ব্যবহার করুন ।

aria2c -j 5 [url] [url2]

আরও তথ্যের জন্য http://aria2.sourceforge.net/ এ দেখুন । ব্যবহারের তথ্যের জন্য, ম্যান পৃষ্ঠাটি সত্যই বর্ণনামূলক এবং ব্যবহারের উদাহরণ সহ নীচে একটি বিভাগ রয়েছে। একটি অনলাইন সংস্করণ http://aria2.sourceforge.net/manual/en/html/README.html এ পাওয়া যাবে ।


8

একাধিক সংযোগে উইজেট ডাউনলোড করা যায় না, এর পরিবর্তে আপনি অন্যান্য প্রোগ্রামটি আরিয়া 2 এর মতো ব্যবহার করতে পারেন।



4

ব্যবহার

aria2c -x 10 -i websites.txt >/dev/null 2>/dev/null &

ওয়েবসাইট.txt এ প্রতি লাইনে 1 ইউআরএল রাখুন, উদাহরণস্বরূপ:

https://www.example.com/1.mp4
https://www.example.com/2.mp4
https://www.example.com/3.mp4
https://www.example.com/4.mp4
https://www.example.com/5.mp4

2

তারা সবসময় বলে যে এটি নির্ভর করে তবে এটি যখন কোনও ওয়েবসাইটের মিররিংয়ের কথা আসে তখন সেরাটি উপস্থিত থাকে httrack । এটি সুপার দ্রুত এবং কাজ করা সহজ। একমাত্র নেতিবাচকতা এটি বলা হয় সমর্থন ফোরাম কিন্তু আপনি সরকারী ডকুমেন্টেশন ব্যবহার করে আপনার উপায় খুঁজে পেতে পারেন । এটিতে জিইউআই এবং সিআইএল উভয়ই ইন্টারফেস রয়েছে এবং এটি কুকিজকে কেবল ডক্স পড়ার জন্য সমর্থন করে এটি সেরা এটি।

httrack -c8 [url]

ডিফল্টরূপে সার্ভারের ওভারলোড এড়াতে এক সাথে সংযোগের সর্বাধিক সংখ্যক 8 টি সীমাবদ্ধ


2

সমান্তরালে একাধিক ফাইলে কাজ xargsকরতে ব্যবহার wgetকরুন

#!/bin/bash

mywget()
{
    wget "$1"
}

export -f mywget

# run wget in parallel using 8 thread/connection
xargs -P 8 -n 1 -I {} bash -c "mywget '{}'" < list_urls.txt

এরিয়া 2 বিকল্পগুলি, 20 এমবি থেকে কম ফাইলের সাথে সঠিকভাবে কাজ করা working

aria2c -k 2M -x 10 -s 10 [url]

-k 2M 2 এমবি অংশে ফাইল বিভক্ত করুন

-kবা --min-split-size20mb এর ডিফল্ট মান রয়েছে, যদি আপনি এই বিকল্পটি সেট না করেন এবং 20 এমবি এর নীচে ফাইল করেন তবে এটি কেবলমাত্র একক সংযোগে চলবে কোনও মূল্যই -xবা না হোক-s


1

makeসহজেই সমান্তরাল হতে পারে (যেমন, make -j 4)। উদাহরণস্বরূপ, Makefileআমি উইজেট ব্যবহার করে সমান্তরালভাবে ফাইলগুলি ডাউনলোড করতে ব্যবহার করছি এটি একটি সহজ :

BASE=http://www.somewhere.com/path/to
FILES=$(shell awk '{printf "%s.ext\n", $$1}' filelist.txt)
LOG=download.log

all: $(FILES)
    echo $(FILES)

%.ext:
    wget -N -a $(LOG) $(BASE)/$@

.PHONY: all
default: all

0

নিয়মিত এক্সপ্রেশন বা এফটিপি গ্লোববিং ব্যবহার বিবেচনা করুন । এর মাধ্যমে আপনি ফাইলের নামের বিভিন্ন গ্রুপের উপস্থিতিগুলির ঘনত্বের উপর নির্ভর করে একাধিকবার উইজেট শুরু করতে পারেন।

এটি উদাহরণস্বরূপ যেখানে আমি দুটি এনএএস-এর মধ্যে একটি ফোল্ডার সিঙ্ক করব:

wget --recursive --level 0 --no-host-directories --cut-dirs=2 --no-verbose --timestamping --backups=0 --bind-address=10.0.0.10 --user=<ftp_user> --password=<ftp_password> "ftp://10.0.0.100/foo/bar/[0-9a-hA-H]*" --directory-prefix=/volume1/foo &
wget --recursive --level 0 --no-host-directories --cut-dirs=2 --no-verbose --timestamping --backups=0 --bind-address=10.0.0.11 --user=<ftp_user> --password=<ftp_password> "ftp://10.0.0.100/foo/bar/[!0-9a-hA-H]*" --directory-prefix=/volume1/foo &

প্রথম উইজেট শুরু হওয়া সমস্ত ফাইল / ফোল্ডার সিঙ্ক করে 0, 1, 2... F, G, H এবং দ্বিতীয় থ্রেডটি সমস্ত কিছু সিঙ্ক করে।

এটি একটি 10 ​​জি ইথারনেট পোর্ট (10.0.0.100) এবং দুটি 1 জি ইথারনেট পোর্ট (10.0.0.10 এবং 10.0.0.11) সহ একটি এনএএস এর মধ্যে সিঙ্ক করার সহজতম উপায় ছিল। আমি দুটি উইজেটের থ্রেডকে --bind-addressবিভিন্ন ইথারনেট পোর্টের সাথে আবদ্ধ করেছি &এবং প্রতিটি লাইনের শেষে রেখে সমান্তরাল বলেছি called এর মাধ্যমে আমি মোট 2x 100 এমবি / এস = 200 এমবি / গুলি সহ বিশাল ফাইলগুলি অনুলিপি করতে সক্ষম হয়েছি।

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