फ़ाइलों को अधिलेखित करने के लिए कैसे अनुमति दें


9

wgetकमांड का उपयोग करते हुए , मैं अपनी स्थानीय फ़ाइल को ओवरराइट करने की अनुमति / निर्देश कैसे देता हूं, चाहे मैं कितनी भी बार आह्वान करूं।

मान लीजिए, मैं स्थान से एक फ़ाइल डाउनलोड करना चाहता हूं: http: //server/folder/file1.html

यहां, जब भी मैं कहता हूं wget http://server/folder/file1.html, मैं चाहता हूं कि यह file1.htmlमेरे स्थानीय सिस्टम में लिखे गए समय के बावजूद इसे बदल दिया जाए, जो पहले से डाउनलोड है, आदि। मेरा इरादा / उपयोग का मामला यह है कि जब मैं wget कहता हूं, तो मुझे बहुत यकीन है कि मैं चाहता हूं मौजूदा फ़ाइल को बदलने / अधिलेखित करने के लिए।

मैं निम्नलिखित विकल्पों के बाहर की कोशिश की है, लेकिन प्रत्येक विकल्प का इरादा / किसी अन्य उद्देश्य के लिए है।

  1. -nc => - कोई-लौंग नहीं
  2. -एन => टाइम स्टैम्पिंग चालू करें
  3. -r => पुनरावर्ती वापस लाने को चालू करें

जवाबों:


7
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-q शांत मोड है, इसलिए आप इसे कमांड से किसी भी आउटपुट के बिना क्रॉन में फेंक सकते हैं


wgetकमांड में कोई प्रत्यक्ष विकल्प नहीं है जो मेरे बिना स्पष्ट रूप से उपयोग करने को निर्दिष्ट करता है -O filename?
ज्ञानम

3
ऐसा लगता है जब wget का उपयोग कर फ़ाइलों को डाउनलोड हर फ़ाइलों को अधिलेखित करने के लिए मजबूर करने का कोई तरीका नहीं है कि वहाँ। हालांकि, एन विकल्प निश्चित रूप से डाउनलोड करने और नए फ़ाइलों को अधिलेखित मजबूर कर सकते हैं का उपयोग करें। wget -N मूल फ़ाइल को अधिलेखित कर देगा यदि आकार या टाइमस्टैम्प परिवर्तित हो
aleroot

सच नहीं। फाइल करने के लिए stdout और यह पाइप में आदेश के उत्पादन में प्रत्यक्ष: wget -q $ urlYouNeedToGrap> $ fileYouWantToOverwriteEverytime
rasjani

8

यह विकल्प काम करता है

wget -N http://server/folder/file1.html

जानकारी

-N,  --timestamping            don't re-retrieve files unless newer than
                               local.

4

curlइसके बजाय का उपयोग करें ?

curl http://server/folder/file1.html > file1.html

मैं लिनक्स विशेषज्ञ नहीं हूं। wgetऔर के बीच बुनियादी अंतर क्या है curl? मुझे यकीन है कि प्रत्येक कमांड कुछ विशिष्ट उद्देश्य के लिए है।
ज्ञानम

1
@ ज्ञानम: वे वास्तव में मूल सीएलआई उपयोगिता में बहुत अधिक ओवरलैप करते हैं। दोनों एक HTTP कनेक्शन बना सकते हैं और डिस्क पर परिणाम सहेज सकते हैं। मतभेदों के बारे में जानने के लिए daniel.haxx.se/docs/curl-vs-wget.html पर ध्यान दिए बिना, उपरोक्त उपयोग पूर्ण मान्य है। इस सामान्य क्षेत्र में अन्य उपकरण भी हैं: curl.haxx.se/docs/comparison-table.html
थॉम्पसन

उन 2 लिंक वास्तव में अंतर को समझने में मददगार हैं।
ज्ञानम

0

मुझे नहीं लगता कि आप इसे तब तक कर सकते हैं जब तक कि आप निर्देशिकाओं को डाउनलोड न करें (इसलिए -x ध्वज को पास करें)। यदि आप जानते हैं कि फ़ाइल क्या है, तो आप -O फ़ाइल नाम का उपयोग कर सकते हैं, इसलिए उदाहरण के लिए:
wget http://yourdomain.com/index.html -O index.html


0

अनटाइड: शायद आप साथ काम कर सकते हैं wget -r --level=0

एक अन्य संभावना: curl -Oअधिलेखित (लेकिन यह फ़ाइल नाम चुनने के एक अलग तरीके का उपयोग करता है, जो आपके लिए महत्वपूर्ण हो सकता है या नहीं)।


यह wgetपंक्ति वास्तव में सही काम नहीं करती है क्योंकि यह उपनिर्देशिकाओं की पदानुक्रम बनाता है। curl -Oदूसरी ओर, मौजूदा प्रतियों को अधिलेखित करके फ़ाइल को सही ढंग से डाउनलोड करता है।
sth

0

अपनी स्क्रिप्ट में विग के चारों ओर एक छोटा आवरण क्यों नहीं रखा गया?

स्क्रिप्ट सभी फ़ाइलों को एक अस्थायी स्थान पर ले जा सकती है, फिर दूरस्थ फ़ाइलों / वेब पृष्ठों को मिटा सकती है।

सफलता पर अस्थायी स्थान में फ़ाइलों को हटा दें। विफलता पर फाइल वापस ले जाने और एक त्रुटि बढ़ा।

जब तक आप विशेष रूप से सभी फ़ाइलों का नाम नहीं जानते हों, तब तक आप केवल wget का उपयोग करना चाहते हैं, ऐसा करने का एक आसान तरीका नहीं है, इस स्थिति में -O विकल्प आपको डाउनलोड की गई फ़ाइल के फ़ाइलनाम को बाध्य करने की अनुमति देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.