मैं wget
छवि फ़ाइलों को डाउनलोड करने के लिए (एक php स्क्रिप्ट से) का उपयोग करना चाहता हूं , लेकिन एक निश्चित आकार से अधिक फ़ाइलों को डाउनलोड नहीं करना चाहता।
क्या मैं फ़ाइल का आकार सीमित कर सकता हूं wget
? यदि नहीं, तो बेहतर तरीका क्या है?
मैं wget
छवि फ़ाइलों को डाउनलोड करने के लिए (एक php स्क्रिप्ट से) का उपयोग करना चाहता हूं , लेकिन एक निश्चित आकार से अधिक फ़ाइलों को डाउनलोड नहीं करना चाहता।
क्या मैं फ़ाइल का आकार सीमित कर सकता हूं wget
? यदि नहीं, तो बेहतर तरीका क्या है?
जवाबों:
यदि आप डाउनलोड डाउनलोड कर रहे हैं, तो आपको curl
इसके बजाय उपयोग करने पर विचार करना चाहिए । WOG आउटपुट को पुन: पार्स कर सकता है और पूरी साइट्स को पुन: ला सकता है, लेकिन कर्ल के पास एक विशिष्ट फ़ाइल के वास्तविक डाउनलोड से संबंधित अधिक विकल्प हैं। यहाँ आदमी पृष्ठ में प्रासंगिक विकल्प है:
--max-filesize
डाउनलोड करने के लिए एक फ़ाइल का अधिकतम आकार (बाइट्स में) निर्दिष्ट करें। यदि अनुरोध की गई फ़ाइल इस मान से बड़ी है, तो हस्तांतरण प्रारंभ नहीं होगा और कर्ल बाहर निकलें कोड 63 के साथ वापस आ जाएगा।
नोट: फ़ाइल का आकार हमेशा डाउनलोड करने से पहले नहीं जाना जाता है, और ऐसी फ़ाइलों के लिए इस विकल्प का कोई प्रभाव नहीं पड़ता है भले ही फ़ाइल हस्तांतरण इस दी गई सीमा से अधिक बड़ा है।
केवल कुछ फ़ाइलों के लिए काम करने के बारे में ध्यान देने योग्य है। क्लाइंट यह डाउनलोड करने से पहले फाइल कितनी बड़ी होने वाली है, इसकी रिपोर्ट करने के लिए सर्वर पर निर्भर है। अधिकांश लेकिन निश्चित रूप से सभी सर्वर इसकी रिपोर्ट नहीं करते हैं।
यदि आप wget का उपयोग करना चाहते हैं, तो बिना डाउनलोड किए फ़ाइल के आकार का परीक्षण करने का एक तरीका है:
wget --spider $URL 2>&1 | awk '/Length/ {print $2}'
$URL
उस फ़ाइल का URL कहाँ है जिसे आप डाउनलोड करना चाहते हैं, अवश्य।
इसलिए आप आउटपुट के आधार पर अपनी स्क्रिप्ट को कंडीशन कर सकते हैं। जैसे कि:
{ [ $(wget --spider $URL 2>&1 | awk '/Length/ {print $2}') -lt 20971520 ] && wget $URL; } || echo file to big
डाउनलोड साइज़ को 20 एमबी तक सीमित करने के लिए।
(कोड बदसूरत है, केवल सूचना के प्रयोजनों के लिए)।
Wget के साथ अधिकतम फ़ाइल आकार सेट करने के लिए कोई भी उचित तरीका प्रतीत नहीं होता है।
ulimit
(देखें bash(1)
, setrlimit(2)
) भी साथ काम करेंगे wget(1)
, हालांकि यह थोड़ा भारी हाथ है।
wget में एक -Q
--quota
विकल्प होता है जो कई URLS (पुनरावर्ती या इनपुट सूची) दिए जाने पर अधिकतम डाउनलोड राशि को सीमित करता है।
https://www.gnu.org/software/wget/manual/html_node/Download-Options.html
$n
बाइट से बड़ी फ़ाइल बनाने से रोकने के लिए एक सिस्टम सीमा के साथ जोड़ सकते हैं(ulimit -f $(($n/512)); curl --max-filesize $n …)
:।curl
यदि फ़ाइल का आकार$n/512
512-बाइट ब्लॉक से अधिक है, तो एक त्रुटि के साथ गर्भपात होगा ।