मैंने गुफरान की सिफारिश axel
पर कोशिश की लेकिन इसने मुझे बहुत निराश किया। मेरा लक्ष्य एक सीएलआई प्रतिस्थापन खोजना था क्योंकि यह सीपीयू और हार्ड डिस्क को हॉग करता है और 8-कोर मैक प्रो पर भी पूरे सिस्टम को धीमा कर देता है। मैं भी के लिए एक बहु-क्रम प्रतिस्थापन चाहता था और नहीं एक स्क्रिप्ट है कि इन के कई उदाहरण चलाता है के कुछ kludge,। इसलिए मैंने आगे खोज की और पाया कि जो मैं अभी सोचता हूं, वह परम आधुनिक मल्टीथ्रेडेड सीएलआई डाउनलोडर है - aria2 । मेरे पास जो बड़ी समस्या थी, वह यह थी कि एसएसएल के ऊपर फाइल डाउनलोड करने में यह 'फेक' था। मैंने ऐसा करते हुए पकड़ लिया । यह साधारण के रूप में लिंक डाउनलोड कर रहा थाDownThemAll
wget
curl
axel
tcdump
https
http
। यह वास्तव में मुझे परेशान कर रहा था और अगर मैंने जाँच नहीं की होती, तो मुझे सुरक्षा की झूठी समझ होती। मुझे संदेह है कि कई लोग सुरक्षा में इस गंभीर उल्लंघन के बारे में जानते हैं। पर वापस जाना aria2
, यह किसी भी अन्य डाउनलोडर की तुलना में अधिक उन्नत है। यह HTTP (एस), एफ़टीपी, बिटटोरेंट, और मेटलिंक प्रोटोकॉल का समर्थन करता है, मल्टीप्लायर है, और डाउनलोड गुरिल्ला है। यह डीटीए के विपरीत, सीपीयू या हार्ड डिस्क पर लोड के बिना मेरे आईएसपी के बैंडविड्थ को अधिकतम करता है। मैन पेज विशाल है। मैं इसके कई विकल्पों में से कुछ का उपयोग कभी नहीं करूंगा। और ओह, बीटीडब्ल्यू, मैंने इसके एसएसएलटी प्रदर्शन के साथ जाँच की tcdump
और यह ठोस है, नकली नहीं है। मैंने एक स्क्रिप्ट लिखी जो डीटीए के व्यवहार की नकल करती है, अगर इसकी सुविधा नहीं है।
अधिकतम बैंडविड्थ प्राप्त करने के लिए मैं जिस मूल कमांड का उपयोग करता हूं वह है
aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL
-c
यदि यह बाधित हो जाता है, तो डाउनलोड को जारी रखने की अनुमति देता है, -x 10
और -s 10
प्रति सर्वर 10 कनेक्शन तक अनुमति देता है, और -d "mydir"
फ़ाइल को निर्देशिका में आउटपुट करता है mydir
।
aria2files.sh
:
#!/bin/bash
filename="$1" # get filename from command line argument
while read -r line
do
if [ "$line" ] # skip blank lines
then
if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
then
echo "URL: '$line'"
aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
else # line contains a directory name, create directory if not already present
echo "Directory: '$line'"
currdir="$line"
if [ ! -d "$currdir" ]
then
mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
fi
fi
fi
done < "$filename"
यह प्रारूप की एक पाठ फ़ाइल पढ़ता है:
files.txt
:
dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…
स्क्रिप्ट कमांड लाइन से फ़ाइल नाम पढ़ती है:
aria2files.sh files.txt
यह निर्देशिका और उन्हें डाउनलोड बनाता है। यह नेस्टेड निर्देशिका बना सकता है जैसा कि दूसरे उदाहरण में दिखाया गया है।
अधिक विवरण के लिए , एक पाठ फ़ाइल में सूचीबद्ध URL से निर्दिष्ट निर्देशिकाओं की फ़ाइलों को डाउनलोड करने के लिए मेरी पोस्ट बैश स्क्रिप्ट देखें ।