Поступила такая задача: создать зеркальную копию уже существующего сайта, но с небольшими исправлениями. Заказчика устроил вариант с html сайтом, а значит создание зеркала можно легко выполнить с помощью программы wget, которая есть во всех дистрибутивах linux. Однако редактировать шапку (и прочие повторяющиеся элементы) вручную, не есть хорошая идея. Рассмотрим, как можно максимально упростить задачу.
Для начала нужно скопировать сам сайт. Воспользуемся командой:
wget -mk http://www.site.com/
Ключ «m» включает в себя: бесконечную рекурсивную загрузку сайта (т.е. весь сайт целиком, включая картинки, с распихиванием файлов по папкам) и скачку только новых файлов. А «k» позволяет скачивать стили сайта css (включая различные библиотеки), так что вся анимация будет работать, как положено.
После скачки, которая завершится преобразованием файлов, нужно проверить кодировку сайта.
Для этого открываем ближайший index.html и смотрим в самое начало файла, высматривая charset=. Если после знака = будет windows-1251, то, скорее всего, текстовый редактор покажет кириллицу в виде иероглифов, хотя сам сайт будет работать как надо.
Что бы поменять кодировку во всех файлах и папках можно воспользоваться небольшим скриптом.
Для начала подготовим список всех html файлов на сайте.
find . -iregex '.*html' -print > list
Откроем этот файл через текстовый редактор (например, gedit) и сотрём «./»
Теперь можно приступать к смене кодировки. Создаём текстовый файл (который станет скриптом) в том же месте, где и лежит файл list со следующим содержанием:
#!/bin/bash
sed -i 's/[ ]/_/g' list
for n in $(cat list);
do
m=`echo $n | sed 's/_/ /g'`
iconv -f windows-1251 -t utf8 -o "$m.utf8" "$m"
mv "$m.utf8" "$m"
done
Не забудьте сделать файл исполняемым перед запуском.
Если у вас исходная не windows-1251, то замените на свою. Индусткий код с sed нужен, что бы корректно обработать пробелы в имени файлов, если такие имеются.
Теперь линукс будет корректно работать со всеми файлами, однако на самом сайте кодировка поплывёт и вся станет кроказябрами. Тут пригодится последний скрипт, который поможет внести любые текстовые изменения во всех файлах.
Его создаём в том же месте, где и предыдущий скрипт, но с таким содержанием:
#!/bin/bash
sed -i 's/[ ]/_/g' list
for n in $(cat list);
do
m=`echo $n | sed 's/_/ /g'`
sed -i s/'что меняем'/'на что меняем'/g "$m"
done
И делаем его исполняемым.
Теперь достаточно вписать нужные нам данные заместо «что меняем» и «на что меняем» и запустить скрипт. Например в первое поле вносим ‘windows-1251’, а во второе ‘utf8’ и запускаем скрипт. В итоге он сменит тег для отображения кодировки во всех hrml файлах и кроказябры с сайта исчезнут.
В последующим с помощью этого скрипта можно будет легко вносить изменения на html сайте, даже если они находятся в подвале, меню, шапке и в тому подобных местах.
wget -mk http://www.site.com/
скачивает тоолько index.html
Я все шаги проводил вначале на компьютере, а только потом заносил в статью, так что всё проверено и должно работать.
Там, кстати, папка должна появится по имени домена.
да.. папка есть в ней index.html и все )
Оказывается и в самом деле есть site.com (я его просто для примера привёл). Но в любом случае видно, что всё работает:
http://dl.dropbox.com/u/24844052/Выделение_006.jpg
Скачну тормазнул секунд через 20, когда ещё раз убедился, что всё качается.
я тоже привел site.com в виде примера и он действительно скачивается а сайт который мне нужен нет))
п.с. как тормазнуть скачку ?
ctrl+z или ctrl+c, что бы остановить команду… ну или закрыть терминал.
А что за сайт? Я когда собирал инфу для статьи, то кое где проскакивали комментарии, что wget далеко не всё может вытащить.
на ucoze сайт … очень древний и кривой))
п.с. а если терминал я закрыл.. то как остановить тогда ?
В системном мониторе системы или в консольном системном мониторе (например, http://tuksik.ru/htop/). В имени процесса будет содержаться имя скрипта.
Спасибо за статью. У меня тоже скачивался только index.html. Потом я добавил www к домену и все покатило)))