2014-12-30 2 views
2

Я пытаюсь сделать зеркало веб-сайта, но URL-адреса включают в себя несколько путей, которые перекрываются при копировании в файлы на диске в обычном порядке wget. Проблема проявляется в таких URL-адресах, как http://example.com/news и http://example.com/news/article1.с помощью wget для зеркального отображения веб-сайта с пустым и подпапкой с таким же именем

Wget загружает эти URL как /news и /news/article1, но это означает, что файл /news перезаписывается папкой с тем же именем.

Правильное статическое зеркало требует, чтобы эти два URL-адреса загружались вместо /news/index.html и /news/article1.

Я попытался обойти эту проблему, выполнив wget дважды и перемещая файлы соответственно, но это не сработало для меня. Путь /news имеет ссылки на /news/article1, которые необходимо преобразовать. Я использую параметр -k для преобразования ссылок, но если я дважды запускаю wget, он не преобразует ссылки между этими несвязанными загруженными файлами.

Вот моя команда:

wget -p -r -l4 -k -d -nH http://example.com 

Вот пример работы вокруг, что я пробовал:

# wget once at first level (gets /news path but not /news/*) 
wget -p -r -l1 -k -nH http://example.com 

# move /news file to temp path 
mv news /tmp/news.html 

# wget again to get everything else (notice the different level value) 
wget -p -r -l4 -k -nH http://example.com 

# move temp path back to /news/index.html 
mv /tmp/news.html news/index.html 

В приведенном выше примере, ссылки на /news страницы, которые, как предполагается, point to /news/article1 не были преобразованы.

Кто-нибудь знает, как обойти это с помощью wget? Есть ли другой инструмент, который будет работать лучше?

+1

Я думаю (большинство) * Linux * файловые системы не позволяют файл и директорию с тем же именем в любом случае. Разрешено ли переименовывать * файлы *, чтобы отличать их от каталогов? –

+0

@CommuSoft, ДА! 'wget' может переименовывать HTML-файлы, чтобы добавить расширение' .html'. Спасибо за помощь! – dayer4b

ответ

1

Я понял!

Проблема была в моем предположении, что /news/index.html был URL, который мне нужен. После тщательного изучения man-страницы, я обнаружил, что -E (--adjust-extension) решил мою проблему. Этот флаг заставляет wget применять расширение .html на все файлы HTML, которые он загружает.

Сцепление, которое с -k для преобразования ссылок приводит к 100% -ному использованию зеркала, которое имеет все необходимые страницы.

Вот пример карты загруженных файлов и путей:

http://example.com/news   --> /news.html 
http://example.com/news/article1 --> /news/article1.html 

В качестве функционального зеркала, это здорово. Конфигурации веб-сервера по умолчанию (по крайней мере, для Apache), похоже, позволяют пути http://sitemirror.com/news/article1 загрузить содержимое /news/article1.html. Тем не менее, может потребоваться, чтобы переписать для того, чтобы путь http:/sitemirror.com/news отображал 404 или индекс для папки. Это не должно быть жестким.

О, так вот мой последний wget команда:

wget -p -r -l4 -E -k -nH http://example.com 
Смежные вопросы