Сервер: Копирование сайта через wget

Команда wget позволяет быстро сделать локальную копию сайта для офлайн-просмотра, бэкапа или анализа структуры. Ниже — базовый пример команды для зеркалирования сайта с сохранением структуры и ссылок, а также более вежливый вариант, который не создаёт лишней нагрузки на сервер.

Базовая команда для копирования сайта

Пример команды для копирования сайта https://site-domain.test в каталог ./test:

wget -p -m -k -P ./test https://site-domain.test
  • -p — скачивает все ресурсы, необходимые для корректного отображения страниц: стили (CSS), скрипты (JS), изображения и другие вложения.

  • -m (mirror) — включает режим зеркала:

    • -r — рекурсивная загрузка (обход ссылок на страницах);
    • -N — не перекачивает файлы, если они не изменились на сервере;
    • -l inf — глубина рекурсии без ограничений.
  • -k — переписывает ссылки внутри HTML-файлов так, чтобы они указывали на локальные файлы, а не на оригинальный сайт в интернете.

  • -P ./test — указывает каталог, в который будут сохранены все скачанные файлы.

wget копирует только статическую часть сайта (HTML, CSS, JavaScript, изображения и т.п.). Серверный код (PHP, базы данных и т.д.) в зеркало не попадает.

Улучшенный (вежливый) вариант команды

wget \
	-m -p -k -E \
	--no-parent \
	--domains=site-domain.test \
	--wait=1 --random-wait \
	--limit-rate=200k \
	-P ./test \
	https://site-domain.test/

Что добавлено в улучшенной команде

  • -E / --adjust-extension — добавляет расширение .html к HTML-файлам, если сервер его не указал.

  • --no-parent — не поднимается выше указанного URL, не лезет в родительские каталоги относительно стартовой страницы.

  • --domains=site-domain.test — ограничивает обход только доменом site-domain.test. Внешние домены и сторонние ресурсы игнорируются.

  • --wait=1 и --random-wait — добавляют паузу между запросами и случайный разброс задержки. Так вы уменьшаете нагрузку на сервер и снижаете риск быть заблокированным.

  • --limit-rate=200k — ограничивает скорость скачивания (в примере до 200 КБ/с), чтобы не забивать канал и не создавать пиковую нагрузку.

Фильтрация лишних файлов

Если сайт большой, имеет смысл отфильтровать ненужные форматы файлов.

Пример: отклонить тяжёлые архивы и видео

wget \
	-m -p -k -E \
	--no-parent \
	--domains=site-domain.test \
	--wait=1 --random-wait \
	--limit-rate=200k \
	--reject=zip,tar,tar.gz,rar,7z,mp4,avi,iso \
	-P ./test \
	https://site-domain.test/

Пример: скачивать только популярные веб-форматы

wget \
	-m -p -k -E \
	--no-parent \
	--domains=site-domain.test \
	--wait=1 --random-wait \
	--limit-rate=200k \
	--accept=html,htm,css,js,jpg,jpeg,png,gif,webp,svg \
	-P ./test \
	https://site-domain.test/
Просмотров: 322
Материал помог? Оценка помогает находить устаревшие и спорные решения.

Комментарии

0

Нашли ошибку или хотите дополнить материал?

Комментариев пока нет.Можно первым дополнить материал или сообщить об ошибке.
Telegram