`wget`- एक अलग डोमेन पर" स्थानीय "ब्राउज़िंग के लिए एक वेबसाइट


2

मुझे एक वेबसाइट को मिरर करने और एक अलग डोमेन नाम के तहत कॉपी को तैनात करने की आवश्यकता है। मिररिंग प्रक्रिया सभी स्वचालित होनी चाहिए, ताकि मैं नियमित रूप से कॉपी को अपडेट कर सकूं cron

दर्पण एक वास्तविक दर्पण नहीं होना चाहिए, लेकिन यह स्थिर प्रतिलिपि होना चाहिए, उदाहरण के लिए एक विशिष्ट समय में साइट का स्नैपशॉट, इसलिए मुझे लगता है wgetकि फिट हो सकता है।

अब तक, मैं मूल साइट की एक प्रति प्राप्त करने के लिए निम्नलिखित स्क्रिप्ट के साथ आया हूं:

#!/bin/bash

DOMAIN="example.com"

cd /srv/mirrors
TMPDIR=$(mktemp -p . -d)
cd "${TMPDIR}"

wget -m -p -E --tries=10 --convert-links --retry-connrefused "${DOMAIN}"

cd ..
rm -rf oldcopy
mv "${DOMAIN}" oldcopy
mv "${TMPDIR}/${DOMAIN}" "${DOMAIN}"
rmdir "${TMPDIR}"

परिणामी प्रति को फिर से नए डोमेन नाम के तहत Nginx द्वारा आपके लिए लाया जाता है, एक स्थानीय स्थैतिक साइट के लिए एक सरल कॉन्फ़िगरेशन के साथ, और यह काम करने लगता है।

समस्या यह है कि मूल सर्वर उन वेब पेजों का निर्माण करता है जिनमें आंतरिक लिंक होते हैं, तब भी जब वे आंतरिक संसाधनों से जुड़ते हैं। उदाहरण के लिए एक पृष्ठ https://example.com/page1शामिल है

<link rel="stylesheet" href="https://example.com/style.css">
<script src="https://example.com/ui.js"/>

और इतने पर (यह वर्डप्रेस है)। कोई भी तरीका मैं उस व्यवहार को नहीं बदल सकता। wgetफिर स्थानीय ब्राउज़िंग के लिए उन लिंक को परिवर्तित नहीं करता है, क्योंकि वे निरपेक्ष हैं (या, कम से कम, मुझे लगता है कि इसका कारण है)।

EDIT: वास्तविक डोमेन नाम assodigitale.it है, हालांकि मुझे एक स्क्रिप्ट की आवश्यकता है जो विशेष डोमेन की परवाह किए बिना काम करती है, क्योंकि मुझे कुछ अन्य डोमेन के लिए भी इसकी आवश्यकता होगी।

क्या मैं wgetउन लिंक को नए डोमेन नाम में परिवर्तित कर सकता हूं ?


wget -kलिंक को उन पृष्ठों में परिवर्तित करना चाहिए जिन्हें आपने किसी रिश्तेदार लिंक पर डाउनलोड किया है। यह काम क्यों नहीं करता है? क्या आप एक उदाहरण प्रदान कर सकते हैं?
डेनिर

@ डार्नीर जैसा कि आप देख सकते हैं मैं पहले से ही उपयोग कर रहा हूं -k, जो कि जैसा है वैसा ही है --convert-links। समस्या यह है कि यह पूर्ण लिंक को परिवर्तित नहीं कर रहा है, मुझे लगता है क्योंकि वे पूर्ण हैं।
लुसियो क्रूसा

जवाबों:


0

यह एक मिश्रित सामग्री समस्या हो सकती है या अन्यथा HTTP और HTTPS दोनों प्रोटोकॉल का उपयोग करने से संबंधित हो सकती है?

यह हो सकता है कि आप HTTP का उपयोग करके दर्पण कर रहे हों

DOMAIN="example.com"
wget -m -p -E --tries=10 --convert-links --retry-connrefused "${DOMAIN}"

जबकि उल्लिखित URLs पूर्ण HTTPS URL हैं:

<link rel="stylesheet" href="https://example.com/style.css">
<script src="https://example.com/ui.js"/>

लिंक रूपांतरण आपके आदेश का अंतिम चरण है और यह आपको रूपांतरण प्रक्रिया की विस्तृत जानकारी देने वाली लाइनें दिखा सकता है। यह आपके आदेश का उपयोग करके एक पृष्ठ को प्रतिबिंबित करने से सिर्फ एक उदाहरण है:

Downloaded: 177 files, 12M in 0.2s (51.0 MB/s)
Converting links in example.com/index.html... 45-2
...
Converted links in 15 files in 0.008 seconds.

केवल अंतिम छोर पर पता चल जाएगा कि क्या डाउनलोड किया गया है और यह उन सभी लिंक को परिवर्तित करता है जो इसे (इस डाउनलोड इतिहास से) मौजूदा फाइलों के सापेक्ष पथों के साथ जानता है। यह संभव है, जबकि wget HTTP का उपयोग करके सामग्री को पुनः प्राप्त करने में सक्षम है, यह HTTPS के साथ विफल रहता है।

इसे इस्तेमाल करे:

DOMAIN="example.com"
wget -m -p -E --tries=10 --convert-links --retry-connrefused https://"${DOMAIN}"

यह या तो काम कर सकता है या आपको एक त्रुटि दे सकता है जो वास्तविक समस्या को हल करने में आपकी सहायता करता है।


धन्यवाद। दुर्भाग्य से यह न तो काम करता है और न ही त्रुटियां देता है। यह अग्रणी के बिना भी वैसा ही करता है https://: जैसे कि वे हैं वैसे ही पूर्ण निरपेक्षता रहती है।
लुसियो क्रूसा

ठीक। फिर वास्तविक डोमेन को जाने बिना बताना मुश्किल हो जाता है।
एसा जोकिनेन

वास्तविक डोमेन के साथ प्रश्न को संपादित किया
Lucio Crusca

0

आपकी समस्या का एक और समाधान है।

उन लिंक को नए डोमेन नाम में परिवर्तित करने के बजाय, आप अपने वेबसर्वर को फ़्लाई पर फिर से लिंक बना सकते हैं।

अपाचे के साथ, आप लिंक को फिर से लिखने के लिए mod_sed का उपयोग कर सकते हैं।

जैसे:

AddOutputFilter Sed html आउटपुट "s / example.com / newdomain.com / g"

https://httpd.apache.org/docs/trunk/mod/mod_sed.html


धन्यवाद, लेकिन वह समाधान पूरी तरह से उद्देश्य को हरा देगा: मुझे अधिकतम गति पर स्थिर फ़ाइलों के रूप में पृष्ठों की सेवा करने के लिए स्नैपशॉट की आवश्यकता है। इसके अलावा, मुझे नगनेक्स के साथ पृष्ठों की सेवा करने की आवश्यकता है और मैं अपाचे पर स्विच नहीं कर सकता।
लुसियो क्रूसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.