2012-10-03 11 views
13

मुझे केवल फ़ोल्डर संरचना चाहिए, लेकिन मैं यह समझ नहीं पाया कि कैसे wget के साथ। इसके बजाय मैं इस का उपयोग कर रहा:wget अभी भी डाउनलोड फ़ाइल को अस्वीकार करें

wget आर पीडीएफ, सीएसएस, GIF, txt, png -np -r http://example.com

कौन सा आर के बाद सभी फाइलों को अस्वीकार कर देना चाहिए, लेकिन मुझे लगता है wget अभी भी फ़ाइल डाउनलोड करता है, फिर इसे हटा देता है।

क्या फ़ोल्डर संरचना को पाने का कोई बेहतर तरीका है?

टीटीपी अनुरोध भेजा, का इंतजार प्रतिक्रिया ... 200 ठीक लंबाई: 136,796 (134k) [आवेदन/x-डाउनलोड] के लिए सहेजा जा रहा है: "example.com/file.pdf"

100 % [======================================] 136,796 853 के/0.2 में

2012-10-03 03:51:41 (853 KB/s) - "example.com/file.pdf" बचाया [136796/136796]

012 निकाला जा रहा हैexample.com/file.pdf क्योंकि इसे अस्वीकार कर दिया जाना चाहिए।

यदि कोई सोच रहा था कि यह क्लाइंट के लिए है, तो वे मुझे संरचना बता सकते हैं लेकिन यह एक परेशानी है क्योंकि उनके आईटी लड़के को ऐसा करना है, इसलिए मैं इसे खुद ही प्राप्त करना चाहता था।

+0

हो सकता है आप http पर इस से पूछना चाहिए: //unix.stackexchange.com/ –

+0

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

+1

संभावित डुप्लिकेट: http: // stackoverflow।कॉम/प्रश्न/10712344/दर्पण-http-वेबसाइट-बहिष्करण-निश्चित-फ़ाइलें –

उत्तर

17

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

में कोड टिप्पणियों से (recur.c):

या तो --delete के बाद निर्दिष्ट किया गया था, या हम इस अन्यथा अस्वीकार कर दिया (आर द्वारा जैसे) HTML फ़ाइल लोड सिर्फ इसलिए हम सकता है इसकी हाइपरलिंक फसल - किसी भी मामले में, स्थानीय फ़ाइल को हटाएं।

हम एक अतीत परियोजना जहाँ हम एक प्रमाणीकृत साइट को प्रतिबिंबित करने के लिए किया था और wgetलॉगआउट पृष्ठों भी मार जब यह उन URL को अस्वीकार करने का मतलब था रहता है में एक रन-में इस के साथ किया है। हमें wget के व्यवहार को बदलने के लिए कोई विकल्प नहीं मिला।

जिस समाधान के साथ हम समाप्त हुए थे वह download था, हैक करें और wget का अपना संस्करण बनाएं। शायद यह करने के लिए एक और अधिक सुरुचिपूर्ण दृष्टिकोण है, लेकिन त्वरित सुधार हम इस्तेमाल किया download_child_p() routine के अंत में निम्नलिखित नियम जोड़ने के लिए किया गया था (आपकी आवश्यकताओं से मेल करने के लिए संशोधित):

/* Extra rules */ 
    if (match_tail(url, ".pdf", 0)) goto out; 
    if (match_tail(url, ".css", 0)) goto out; 
    if (match_tail(url, ".gif", 0)) goto out; 
    if (match_tail(url, ".txt", 0)) goto out; 
    if (match_tail(url, ".png", 0)) goto out; 
    /* --- end extra rules --- */ 

    /* The URL has passed all the tests. It can be placed in the 
    download queue. */ 
    DEBUGP (("Decided to load it.\n")); 

    return 1; 

out: 
    DEBUGP (("Decided NOT to load it.\n")); 

    return 0; 
} 
+3

वाह! उन्हें इस तरह काम करने के लिए अस्वीकार समारोह करना चाहिए। लेकिन मुझे एहसास है कि wget एक विशिष्ट कार्य करने के लिए था। धन्यवाद। –

+0

आपका स्वागत है माइकल। –

+0

इस उत्तर को ऊपर उठाना क्योंकि यह एक शानदार DIY समाधान है, लेकिन मैं अभी भी निराश हूं कि कोई बेहतर तरीका नहीं है। – taranaki