क्या पैरेंट डायरेक्ट्री से दी गई गहराई तक फ़ाइलों को प्राप्त करने से छूट को निष्क्रिय करने का एक तरीका है?


11

wget में ऐसा विकल्प होता है, -npजो किसी भी मूल निर्देशिका से फ़ाइलें प्राप्त करने में अक्षम करता है। मुझे कुछ इसी तरह की जरूरत है लेकिन थोड़ा और लचीला। विचार करें:

www.foo.com/bar1/bar2/bar3/index.html

मैं सब कुछ प्राप्त करना चाहूंगा, लेकिन (पेड़ पदानुक्रम में) से अधिक नहीं bar2(!)। तो bar2भी मिलना चाहिए लेकिन नहीं bar1

क्या वेज को और अधिक चयनात्मक बनाने का एक तरीका है?

पृष्ठभूमि: मैं एक वेबसाइट को एक समान तार्किक संरचना के साथ दर्पण करने की कोशिश कर रहा हूं - शुरुआती बिंदु, फिर ऊपर, फिर नीचे। यदि wgetइस तरह के लेआउट के लिए बेहतर अनुकूल कोई अन्य उपकरण है , तो कृपया मुझे भी बताएं।

अपडेट करें

या संभव गहराई को निर्दिष्ट करने के बजाय, शायद "कोई माता-पिता नहीं है, जब तक कि वे इस या उस URL से मेल नहीं खाते"।

अपडेट २

सर्वर पर कुछ संरचना है, है ना? आप इसे एक पेड़ के रूप में देख सकते हैं। तो आम तौर पर "-नो-पैरेंट" के साथ आप कुछ बिंदु ए से शुरू करते हैं और केवल नीचे जाते हैं।

मेरी इच्छा, ऊपर जाने की क्षमता है - यह कहते हुए, इसे एक्स नोड्स, या (जो कि 100% समतुल्य है) से ऊपर जाने की अनुमति है कि इसे बी नोड (जहाँ दूरी BA = X) तक जाने की अनुमति है।

सभी मामलों में, नीचे जाने के नियम उपयोगकर्ता द्वारा परिभाषित किए गए थे (उदाहरण के लिए - केवल Y स्तर से नीचे जाएं)।

इसे कैसे स्टोर करें? वास्तव में यह वास्तव में सवाल नहीं है - wgetडिफ़ॉल्ट रूप से सर्वर संरचना को फिर से बनाता है, डरने के लिए यहां कुछ भी नहीं है, या कुछ भी ठीक करने की कोई आवश्यकता नहीं है। तो, 2 शब्दों में - हमेशा की तरह।

अपडेट ३

नीचे निर्देशिका संरचना - मान लें कि प्रत्येक निर्देशिका में R - R.html और इतने पर केवल एक फ़ाइल है। यह निश्चित रूप से सरल है क्योंकि आपके पास एक से अधिक पृष्ठ हो सकते हैं।

        R 
       / \
      B   G
     / \
    C   F
   / \
  A   D
 /
E 

A (A.html) मेरा शुरुआती बिंदु है, X = 2 (इसलिए B सबसे शीर्ष स्तर का नोड है जिसे मैं लाना चाहूंगा)। इस विशेष उदाहरण में इसका मतलब है कि R.html और G.html को छोड़कर सभी पृष्ठ प्राप्त करना। A.html को "शुरुआती बिंदु" कहा जाता है क्योंकि मुझे इसकी शुरुआत बी से नहीं, बल्कि से करनी है

अद्यतन ४

नाम का उपयोग अद्यतन 3 से किया जाता है।

wget के विकल्प www.foo.com/B/C/A/A.html

सवाल यह है कि निर्देशिका बी और नीचे से सभी पृष्ठों को प्राप्त करने के लिए क्या विकल्प हैं (यह जानते हुए कि आपको ए। Html से शुरू करना है)।


आप चाहते हैं bar2लेकिन नहीं bar1? कहाँ bar2रहने वाला है? क्या होगा यदि दो या दो से अधिक डायर जो आप नहीं चाहते हैं कि उनके नाम से पहचाने जाने वाले उप-अध्यक्ष हैं, क्या उनकी सामग्री को मर्ज किया जाना चाहिए? यह केवल निश्चित रूप से पूरे लानत स्थल को प्राप्त करना आसान है और फिर अपनी इच्छानुसार चीजों को इधर-उधर करना।
किलन फ़ॉथ

@ किलियन फोथ, "संपूर्ण शाप साइट" से आपका क्या अभिप्राय है? इसे प्राप्त कर रहा है? सामान्य तौर पर यह ओवरकिल होता है, इसका मतलब एमबीएस की जरूरत होने पर टीबी लाना हो सकता है। बाकी के लिए, अपडेट 2 देखें।
ग्रीनल्डमैन

पक्का नहीं आपका क्या मतलब है। एकमात्र अंतरविरोध मैं साथ आ सकता हूं, आप bar2निर्देशिका और इसकी सभी सामग्री चाहते हैं। यदि ऐसा नहीं है, तो कृपया स्पष्ट करें।
फहीम मीठा

@ फहीम मीठा, "इसकी सामग्री" = "संपूर्ण उपप्रकार"। हां, यह केवल व्याख्या है जिस पर मुझे विश्वास है, और यही मेरा मतलब है।
ग्रीनल्डमैन

जवाबों:


12

मैंने इसे आज़माया नहीं है, लेकिन मैं -I और -X का उपयोग करके आपको वही दे सकता हूं जो आप चाहते हैं। मेरी पहली कोशिश रेखा के साथ होगी

wget -m -I bar1/bar2 -X "*" http://www.foo.com/bar1/bar2/bar3/index.html

विकल्पों की व्याख्या:

-m: 
   --mirror
       Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets
       infinite recursion depth and keeps FTP directory listings.  It is currently equivalent to -r -N -l
       inf --no-remove-listing.
-I: list
   --include-directories=list
       Specify a comma-separated list of directories you wish to follow when downloading.  Elements of
       list may contain wildcards.
-X: list
   --exclude-directories=list
       Specify a comma-separated list of directories you wish to exclude from download.  Elements of list
       may contain wildcards.

4

आपको URL में एक अंतिम / जोड़ना होगा, अन्यथा आपको वह नहीं मिलेगा जो आप चाहते हैं।

यदि आप www.myhostname.com/somedirectory पर सभी सामग्री प्राप्त करना चाहते हैं, तो वाक्य रचना को पढ़ना चाहिए:

wget -r -nH http://www.myhostname.com/somedirectory/

अंत के बिना यह कोशिश करो / और देखो क्या होता है। फिर इसे / के साथ आज़माएँ।


1
यह अभी भी उच्च निर्देशिकाओं में चढ़ेगा यदि पृष्ठ इससे जुड़े हों तो ऐसे देखें
EkriirkE

अनुगामी स्लेश के साथ संकेत के लिए बहुत बहुत धन्यवाद! इसने मुझे पड़ोसी निर्देशिकाओं (भाई-बहनों) से छूट द्वारा प्राप्त अप्रासंगिक फाइलों के साथ समस्या को हल करने में मदद की।
एंटोनोक

4

मुझे लगता है कि यहाँ सही उत्तर --no-parentविकल्प है:

   -np
   --no-parent
       Do not ever ascend to the parent directory when retrieving recursively.
       This is a useful option, since it guarantees that only the files below
       a certain hierarchy will be downloaded.

ओपी जो चाहता है, उसका ठीक उल्टा यह झंडा है
एक्रीकेर

1

शायद मुझे कुछ याद आ रहा है, लेकिन अगर आप ऐसा चाहते हैं

wget -c -np -r www.foo.com/bar1/bar2

मेरे लिए काम करता है (आपके उदाहरण का उपयोग करके)। बेशक, उन विकल्पों के साथ आपको ऊपर से सभी निर्देशिका संरचना मिल जाएगी, www.foo.comनीचे से भी । यदि आप सिर्फ bar2शीर्ष स्तर पर चाहते हैं , तो करें

wget -c -np -r -nH --cut-dirs=1 www.foo.com/bar1/bar2

-nHसे छुटकारा मिल जाता है www.foo.com, और --cut-dirs=1छुटकारा bar1मिल जाता है , इसलिए आपको bar2वर्तमान निर्देशिका में इसके उपनिर्देशिका मिल जाएंगे । अधिक जानकारी के लिए, देखें man wget, जो काफी पठनीय है और इसके उदाहरण हैं।


आप प्रारंभिक बिंदु छोड़ा जाता है, आप के लिए है लिंक का अनुसरण करें। आपने यह मान लिया कि शुरुआती बिंदु शीर्ष-स्तर (यह तुच्छ मामला है np) पर है, लेकिन मैं सामान्य समाधान की तलाश कर रहा हूं, जब शीर्ष-स्तर प्रारंभिक बिंदु से ऊपर है।
ग्रीनल्डमैन

@macias: क्षमा करें, मैं आपका अनुसरण नहीं कर रहा हूं। क्या आप एक उदाहरण से बता सकते हैं?
फहीम मीठा

मैंने अभी ASCII "स्क्रीनशॉट" जोड़ा है। मुझे उम्मीद है कि इससे सहायता मिलेगी। इस उदाहरण में A प्रारंभिक बिंदु है।
ग्रीनल्डमैन

@macias: तो आप B(उदाहरण के अनुसार) के लिए पथ निर्दिष्ट नहीं करना चाहते हैं , बल्कि A? यदि हां, तो क्यों? क्या यह इसलिए है क्योंकि आप कुछ स्क्रिप्ट को स्वचालित करना चाहते हैं या किसी अन्य कारण से? मुझे यह भी पता नहीं है कि आप X = 2 से क्या मतलब है। इसका मतलब स्तर 2 है? आप आगे पेड़ में नीचे निर्देशिका लाने के लिए कोशिश कर रहे हैं, मुझे यकीन है कि आप कैसे भेद नहीं कर रहा हूँ Bसे G
फहीम मीठा

ए शुरुआती बिंदु है, क्योंकि यह शुरुआती बिंदु है - देखो, मैं क्लाइंट साइड पर हूं, सर्वर नहीं। IOW - मैं नहीं सर्वर के मालिक हैं, और मैं इस संरचना नहीं किया। मुझे जो दिखता है उससे निपटना पड़ता है। एक्स अपडेट 2 से प्रतीक है, "गहराई" कि आप कितने स्तरों तक जा सकते हैं। आप G से B को अलग करते हैं, क्योंकि B, B है और G, B नहीं है और आप B को देखते हैं, क्योंकि यह A. के लिए URL का हिस्सा है। मैंने अपडेट 4 में प्रश्न को फिर से
लिखा है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.