छोड़ें डाउनलोड अगर wget में फ़ाइलें मौजूद हैं?


199

यह सबसे सरल उदाहरण चल रहा है:

wget http://www.example.com/images/misc/pic.png

लेकिन अगर pic.pngपहले से ही उपलब्ध है तो wget स्किप डाउनलोड कैसे करें ?

जवाबों:


270

निम्न पैरामीटर आज़माएं:

-nc, --no-clobber: डाउनलोड कि मौजूदा फ़ाइलों को डाउनलोड होगा छोड़ दें।

नमूना उपयोग:

wget -nc http://example.com/pic.png

35
-ncHTTP अनुरोध और फ़ाइल के बाद डाउनलोड को भेजने से नहीं रोकता है। यह फ़ाइल डाउनलोड करने के बाद कुछ भी नहीं करता है यदि फ़ाइल पहले ही पूरी तरह से पुनर्प्राप्त कर ली गई है। यदि फ़ाइल पहले से मौजूद है तो HTTP अनुरोध करने से रोकने के लिए क्या कोई समस्या है? stackoverflow.com/questions/33203898/…
ma11hew28

8
जैसा कि जुड़े प्रश्न पर कहा गया है, मैं असहमत हूं - अगर नो-क्लोब का उपयोग किया जाता है और फ़ाइल नाम मौजूद होता है तो यह बाहर निकल जाता है। कोई HEAD अनुरोध भी नहीं। यहां तक ​​कि अगर यह मामला नहीं था, तो जांचें कि क्या आपके पास :-)[ ! -e "$(basename $URL)" ] && wget $URL
प्लंड्रा

3
मुझे लगता है कि मुझे अलग-अलग परिणाम मिल सकते हैं क्योंकि मैं --recursiveविकल्प का उपयोग कर रहा हूं ।
ma11hew28

198

-nc, --no-clobberविकल्प सबसे अच्छा समाधान के रूप में नए फ़ाइलें डाउनलोड नहीं किया जाएगा नहीं है। -Nइसके बजाय एक का उपयोग करना चाहिए जो सर्वर पर एक नया संस्करण होने पर ही फाइल को डाउनलोड और अधिलेखित करेगा, इसलिए सही उत्तर है:

wget -N http://www.example.com/images/misc/pic.png

तब एन साथ Wget चल रहा है, के साथ या बिना -rया -p, या नहीं, एक फ़ाइल का नवीनतम प्रतिलिपि डाउनलोड करने के लिए के रूप में निर्णय स्थानीय और दूरस्थ टाइमस्टैम्प और फ़ाइल के आकार पर निर्भर करता है। -ncके रूप में एक ही समय में निर्दिष्ट नहीं किया जा सकता है -N

-N, --timestamping: समय-मुद्रांकन चालू करें।


39
जब सर्वर ठीक से कॉन्फ़िगर नहीं किया गया है तो -Nविफल हो सकता है और wget हमेशा डाउनलोड करेगा। तो कभी-कभी -ncबेहतर समाधान होता है।
यूजर

2
लागू होने वाला परिदृश्य क्या हो सकता है जहां 'जब सर्वर ठीक से कॉन्फ़िगर नहीं होता है' तो क्या होगा?
अजयकुमारबसुथकर

जब आप उस स्थान से डाउनलोड कर रहे थे जिसे कॉपी किया गया था, सभी टाइमस्टैम्प को बदल रहा है।
रॉबर्ट

क्या यह सबसे अच्छा है संदर्भ पर निर्भर करता है। उदाहरण के लिए, मैं एक सूची से ~ 1600 फाइलें डाउनलोड कर रहा हूं, और फिर कुछ और फाइलों को शामिल करने के लिए सूची को अपडेट किया। फाइलें नहीं बदलती हैं इसलिए मुझे नवीनतम संस्करण की परवाह नहीं है और मैं नहीं चाहता कि यह मेरे पास पहले से मौजूद 1600 फाइलों के नए संस्करणों के लिए सर्वर की जांच करे।
जेबेंटली

2
@AjayKumarBasuthkar: जब सर्वर नई फ़ाइल के लिए जाँच के किसी भी तरीके का समर्थन नहीं करता है, wgetशिकायत करेगा Last-modified header missing; यह ठीक वैसी ही स्थिति है।
पिस्कॉर ने

23

जब Wget को -rया के साथ -p, लेकिन बिना -N, -ndया -nc, फिर से डाउनलोड किए हुए फ़ाइल को पुराने की ओवरराइटिंग करने पर नई कॉपी मिलेगी।

इसलिए जोड़ना -ncइस व्यवहार को रोक देगा, इसके बजाय मूल संस्करण को संरक्षित किया जाएगा और सर्वर पर किसी भी नई प्रतियां को अनदेखा किया जाएगा।

जीएनयू में अधिक जानकारी देखें।


18

मैं जो उत्तर ढूंढ रहा था वह https://unix.stackexchange.com/a/9557/114862 पर है

-cजब स्थानीय फ़ाइल सर्वर संस्करण के लिए अधिक या समान आकार की होती है तो ध्वज का उपयोग करने से पुन: डाउनलोड करने से बचना होगा।


1
यह विशेष रूप से महान है जब आप -i ध्वज के साथ फ़ाइलों का एक गुच्छा डाउनलोड कर रहे हैं। wget -i filelist.txt -cफ़ाइलों की सूची का विफल डाउनलोड फिर से शुरू होगा।
ट्रेवर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.