Копирование и восстановление сайтов. Многие наверное знают, что есть платные сервисы по скачиванию/восстановлению сайтов, например x-tool и другие. Так вот есть еще бесплатная и очень хорошая рабочая тема, но все делается в ручную, а не нажал кнопку и все готово. Нет. Сегодня пойдет речь о Linux, семейства ubuntu (я на нем работаю) консоль творит чудеса, а собственно утилита wget и ее команды.
*Перед тем как я напишу метод. Хотелось бы сказать что я рассказываю это с целью продемонстрировать команды и способы их реализации. Не в коем случае не призываю вас применять их в корыстных целях. Спасибо.
Сама команда: wget -r -k -l 7 -p -E -nc http://site.com/ — скачиваем сайт целеком
-w 10 — добавляет 10 сек. интервал между запросами
— random-wait — рандомное время прибавляется к 10 сек.
-p параметр указывающий для wget необходимость скачивать все файлы, включая изображения.
-e robots=off вы не хотите, чтобы wget подчинялся правилам файла robots.txt
-U mozilla идентификатор вашего браузера.Пример подмены заголовков:
wget -d --header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" --header="Referer: http://xmodulo.com/" --header="Accept-Encoding: compress, gzip" -r -e robots=off http://sait.ru/
–random-wait указывает wget делать случайные интервал задержек между скачиваниями, своеобразная защита от возможного попадания в бан
Еще несколько полезных параметров wget:
–limit-rate=20k ограничение скорости закачки
-b продолжает выполнять wget даже после выхода из консоли
-o $HOME/wget_log.txt выводим в лог выходные сообщения
-r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы. -k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме). -p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.). -l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l. -E — добавлять к загруженным файлам расширение .html. -nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.
Пошаговая инструкция: Как скопировать/скачать любой сайт к себе на сервак
- Купили выделенный сервер — zomro и тп.
- Установили os ubuntu или другой, предпочтительнее вам.
- Далее ставите себе программу на ПК — putty, через нее я спокойно работаю в терминале серва.
- Через WinSCP управляем нашими файлами
- Скачиваются сайты успешно. В настройках ставил вложенность страниц от 5 до 7 вполне хватает. Единственное не понятно почему-то не хотят прогружаться видео. С ютюб все норм.
- Нужно делать замену часть кода на всех страницах. С толкнулся с такой проблемой, что я этого никогда не делал, тем более через команды linux на серваке. Изучал инфу в интернете, нашел вот такие команды ls, grep, sed, awk:
ls -l — выдает список категорий
grep text ./* — поиск текста во всех категориях
grep -rl ‘text’ ./web — поиск текста в файлах категории «web»
grep -lr -e 'было' . | xargs sed -i 's/было/стало/g'
$ grep -rl искомый_текст /путь/до/папки/* | xargs perl -p -i -e ‘s/искомый_текст/заменяемый_текст/g’
Вроде как началось все получатся, единственное, с большим куском кода там уже не поиграешься…Но я нашел такую замечательную программу как TextCrawler которая ищет и заменяет код во всех папках и вложенных файлах. Единственный минус в этом способе, это то что сайт нужно сначала скачивать на ПК, менять что нам нужно и потом снова заливать на сервер. Но и это занимает не так много времени.