Как обновить зеркало онлайн-сайта, созданное с помощью `wget --mirror`?

Месяц назад я использовал " wget --mirror " для создания зеркала нашего общедоступного веб-сайта для временного использования во время следующего запланированного периода обслуживания. Наш основной веб-сайт работает на HTML, PHP и MySQL, но зеркало должно быть только HTML, без динамического контента, PHP или базы данных.

Следующая команда создаст простое онлайн-зеркало нашего сайта:

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

Обратите внимание, что руководство Wget говорит --mirror "в настоящее время эквивалентно -r -N -l inf --no-remove-listing " (Человекочитаемый эквивалент -`--recursive --timestamping --level=inf --no-remove-list.

Сейчас месяц, и большая часть контента сайта изменилась. Я хочу, чтобы wget проверил все страницы и загрузил все страницы, которые были изменены. Тем не менее, это не работает.

Мой вопрос:

Что мне нужно сделать, чтобы обновить зеркало веб-сайта, кроме удаления каталога и повторного запуска зеркала?

Файл верхнего уровня по адресу http://www.example.org/index.html не изменился, но есть много других файлов, которые изменились.

Я думал, что все, что мне нужно было сделать, это перезапустить wget --mirror, так как --mirror подразумевает флаги --recursive "указать рекурсивную загрузку" и --timestamping "Не восстанавливайте файлы, если они не новее локальных". Я думал, что это проверит все страницы и получит только те файлы, которые более новые, чем мои локальные копии. Я ошибся?

Тем не менее, wget не открывает сайт со второй попытки. wget --mirror проверит http://www.example.org/index.html, заметит, что эта страница не изменилась, а затем остановится.

--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)

4 ответа

Решение

Следующий обходной путь, кажется, работает на данный момент. Он принудительно удаляет /index.html, что заставляет wget снова проверять все дочерние ссылки. Однако не следует ли wget автоматически проверять все дочерние ссылки?

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

Вы можете попробовать использовать:

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

Я использую ключ --mirror, чтобы сделать именно то, о чем вы спрашиваете, что действительно заставляет wget рекурсивно загружать только новые файлы. В частности, моя командная строка (очищенная):

/usr/bin/wget -v --mirror ftp://user:password@site/ -o /var/log/webmirror -P /var/WebSites
wget –mirror –w 3 –p –P c:\wget_files\example2 ftp://username:password@ftp.yourdomain.com

Вот как я это делаю на компьютере под управлением Windows http://www.devarticles.com/c/a/Web-Services/Website-Mirroring-With-wget/1/

Вы можете изменить путь к структуре каталогов, попробуйте загрузить весь контент через FTP и посмотреть, поможет ли это.

Я также использую другую утилиту на Windows "AllwaySync" работает великолепно.

Другие вопросы по тегам