Wie aktualisiere ich einen mit `wget --mirror` erstellten Online-Website-Spiegel?


8

Vor einem Monat habe ich " wget --mirror " verwendet, um einen Spiegel unserer öffentlichen Website für die vorübergehende Verwendung während eines bevorstehenden geplanten Wartungsfensters zu erstellen. Auf unserer primären Website werden HTML, PHP und MySQL ausgeführt, aber der Spiegel muss nur HTML sein, es werden keine dynamischen Inhalte, PHP oder Datenbanken benötigt.

Mit dem folgenden Befehl wird ein einfacher Online-Spiegel unserer Website erstellt:

wget --mirror http://www.example.org/

Beachten Sie, dass die Wget Handbuch sagt --mirror„ist zur Zeit entspricht -r -N -l inf --no-remove-listing“ (Die menschenlesbare entspricht `--recursive --timestamping --level = inf --no-remove-Auflistung.

Jetzt ist es ein Monat später und ein Großteil des Website-Inhalts hat sich geändert. Ich möchte, dass wget alle Seiten überprüft und alle Seiten herunterlädt, die sich geändert haben. Dies funktioniert jedoch nicht.

Meine Frage:

Was muss ich tun, um den Spiegel der Website zu aktualisieren, ohne das Verzeichnis zu löschen und den Spiegel erneut auszuführen?

Die Datei der obersten Ebene unter http://www.example.org/index.html hat sich nicht geändert, aber es gibt viele andere Dateien, die sich geändert haben.

Ich dachte, ich müsste nur erneut ausführen wget --mirror, da --mirrordie Flags --recursive"Rekursiven Download angeben" und --timestamping"Dateien nur dann erneut abrufen, wenn sie neuer als lokal sind". Ich dachte, dies würde alle Seiten überprüfen und nur Dateien abrufen, die neuer sind als meine lokalen Kopien. Liege ich falsch?

Wget rekursiert die Site jedoch nicht beim zweiten Versuch. 'wget --mirror' überprüft http://www.example.org/index.html , stellt fest, dass sich diese Seite nicht geändert hat, und stoppt dann.

--2010-06-29 10:14:07--  http://www.example.org/
Resolving www.example.org (www.example.org)... 10.10.6.100
Connecting to www.example.org (www.example.org)|10.10.6.100|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Server file no newer than local file "www.example.org/index.html" -- not retrieving.

Loading robots.txt; please ignore errors.
--2010-06-29 10:14:08--  http://www.example.org/robots.txt
Connecting to www.example.org (www.example.org)|10.10.6.100|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 136 [text/plain]
Saving to: “www.example.org/robots.txt”

     0K                                                       100% 6.48M=0s
2010-06-29 10:14:08 (6.48 MB/s) - "www.example.org/robots.txt" saved [136/136]

--2010-06-29 10:14:08--  http://www.example.org/news/gallery/image-01.gif
Reusing existing connection to www.example.org:80.
HTTP request sent, awaiting response... 200 OK
Length: 40741 (40K) [image/gif]
Server file no newer than local file "www.example.org/news/gallery/image-01.gif" -- not retrieving.

FINISHED --2010-06-29 10:14:08--
Downloaded: 1 files, 136 in 0s (6.48 MB/s)

Je nachdem, was Sie spiegeln, können Sie möglicherweise rsync anstelle von wget verwenden. In der Regel auf großen Archivseiten erhältlich.
Dan Pritts

Antworten:


5

Die folgende Problemumgehung scheint vorerst zu funktionieren. Es löscht zwangsweise /index.html, wodurch wget gezwungen wird, alle untergeordneten Links erneut zu überprüfen. Sollte wget jedoch nicht alle untergeordneten Links automatisch überprüfen?

rm www.example.org/index.html && wget --mirror http://www.example.org/

Das hat auch für mich den Trick gemacht. Es geht durch die Dateien mit 304 für die meisten .. aber einige herunterladen .. (Ich hoffe, alles, was sich geändert hat)
Bhikkhu Subhuti

0
wget –mirror –w 3 –p –P c:\wget_files\example2 ftp://username:password@ftp.yourdomain.com

So mache ich das auf einem Windows-basierten Computer http://www.devarticles.com/c/a/Web-Services/Website-Mirroring-With-wget/1/

Sie können den Pfad zu Ihrer Verzeichnisstruktur ändern, versuchen, alle Inhalte über FTP herunterzuladen, und prüfen, ob dies hilfreich ist.

Ich benutze auch ein anderes Dienstprogramm unter Windows "AllwaySync" funktioniert hervorragend.


Dies ist ein HTTP-Webserver, auf dem HTML, PHP und MySQL ausgeführt werden. Ich spiegele die Site als flaches HTML (auf dem Spiegel werden kein PHP oder MySQL benötigt). Es gibt keinen FTP-Zugang zu dieser Box.
Stefan Lasiewski

-1

Ich benutze den Schalter --mirror, um genau das zu tun, wonach Sie fragen, was tatsächlich dazu führt, dass wget nur neuere Dateien rekursiv herunterlädt. Insbesondere lautet meine Befehlszeile (bereinigt):

/usr/bin/wget -v --mirror ftp://user:password@site/ -o /var/log/webmirror -P /var/WebSites

Scheint, als würde mein Wget daran hängen bleiben, dass sich 'index.html' nicht ändert. Ihre Situation kann etwas anders sein, da es keine Entsprechung zu meiner index.html-Datei gibt. Richtig?
Stefan Lasiewski

1
@Stefan, ich habe gerade festgestellt, dass ich wget über FTP verwende, nicht über HTTP. Das ist kein Zweifel, warum sich meine anders verhält. Es ist schon eine Weile her, seit ich das eingerichtet habe, aber ich erinnere mich vage an Probleme bei der Verwendung von HTTP.
John Gardeniers

-1

Sie können versuchen, Folgendes zu verwenden:

wget -r -l inf -N http://www.example.org/

Das führt zum gleichen Verhalten. Diese Optionen sind bereits durch -moder impliziert --mirror. Das Handbuch sagt, ist derzeit gleichbedeutend mit -r -N -l inf --no-remove-listing.
Stefan Lasiewski
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.