NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
RU

Команды Linux и навыки работы с оболочкой

wget: загрузчик, который никогда не спит

wget — это завиток для задач, измеряемых часами: зеркала, архивы, рекурсивные запросы и пакеты cron, которые выполняются, пока никто не наблюдает. Он повторяется, учитывает robots.txt, по умолчанию возобновляет прерванную передачу и устанавливает ограничения скорости и интервалы ожидания, что является вежливостью, оставляемой вызывающему абоненту. Между этими двумя инструментами разделение четкое: wget для объема и терпения, Curl для точности, а команда, которая знает оба, редко нуждается в третьем установщике.

Главное

  1. Зеркальное отображение осуществляется в одну строку: wget --mirror --convert-links --adjust-extension --no-parent https://docs.example.com; опустите --no-parent и архив документации незаметно станет сканировать все, что находится над ним.
  2. Возобновите и повторите попытку бесплатно: wget -c выбирает прерванную передачу для резервного копирования, а --tries=10 --waitretry=5 выводит из строя серверы, которые икают в середине, вместо того, чтобы завершить работу с ошибкой при первом же движении.
  3. У вежливости есть флаги: --limit-rate=200k, --wait=1 и --random-wait, которые не позволяют зеркалу нарушать ограничения скорости восходящего потока или пункт о злоупотреблении общим сервером; Общий хостинг плюс нерегулируемый сканер — это короткая дружба.
  4. robots.txt учитывается по умолчанию; -e robots=off намеренно переопределяет его, и использование этого переопределения на чужом рабочем сайте приводит к тому, что массовые загрузки превращаются в заявки на инциденты.
  5. wget -O /dev/null -nv https://host/health — это однострочный зонд мониторинга, коды завершения которого содержат диагностику: 4 — сбой сети, 8 — ошибка сервера, и оба превосходят тихий cron.
  6. Преобразование имеет значение постфактум: --convert-links перезаписывает зеркальный сайт для автономной навигации, а --adjust-extension сохраняет страницы, сгенерированные CMS, с расширениями, которые могут обслуживать местные инструменты.
  7. Массовые задания в cron получают файлы блокировки, или перекрывающиеся прогоны записывают в незавершенные файлы друг друга, в то время как --waitretry незаметно растягивает задание за пределы своего окна; wget не имеет внутреннего мьютекса.
  8. Знайте границы: формы, сеансы с большим количеством файлов cookie и конечные точки API принадлежат Curl, а страницы, созданные на JavaScript, отражаются как пустые оболочки, поскольку wget следует ссылкам, а не сценариям.

Заметка из практики

Одно зеркало без --no-parent за ночь забрело в сорок гигабайт медиатеки клиента и почти заполнило диск. Флаги вежливости устанавливаются один раз и копируются навсегда.

Частые вопросы

Почему мое зеркало содержит только одну страницу?

Флаги области выполнили работу, которую кто-то хотел отменить: ограничения robots.txt, --no-parent, ограничение глубины или сайт, отображаемый с помощью JavaScript. wget следует по ссылкам, которые он видит; проверьте -o wget.log, прежде чем обвинять инструмент.

Когда мне следует выбирать wget вместо Curl для одной загрузки?

Для чего-либо возобновляемого или надежного cron: -c продолжение, встроенные повторы и метка времени (--timestamping) делают wget выбором с низким уровнем внимания; Curl дает вам то же самое, только если вы соберете его самостоятельно.

Законно ли и вежливо ли зеркалировать общедоступный сайт?

Право собственности решает законно, robots.txt и загрузка решают вежливо: соблюдайте файл robots, снижайте скорость до человеческого уровня и отдавайте предпочтение официальному экспорту или API в тот момент, когда цель предложит его.

Почему некоторые сайты возвращают 403 в обычный wget?

Фильтрация пользовательских агентов, обычно преднамеренная; --user-agent='Mozilla/5.0' поможет вам, но отфильтрованный код 403 также означает, что оператор наблюдает, поэтому диалог или API - лучший следующий шаг.

Как мы берём на себя команды linux и навыки работы с оболочкой

Честно: чаще всего к нам приходят после того, как команда попробовала справиться сама. Команды и сценарии сценариев, которые решают, управляет ли администратор сервером или борется с ним: поиск, преобразование, передача и контроль текста и процессов с помощью инструментов, которые есть в каждой базовой установке. Услуга Безопасность серверов Linux и Администрирование серверов существует как раз затем, чтобы не изучать команды linux и навыки работы с оболочкой на своих ошибках: настройку, ночные сюрпризы и постоянное наблюдение мы берём на себя.

Поговорить с инженером

Проблема с сервером? Взломанный сайт? Медленная страница?

Критические инциденты с ответом в течение 30 минут — круглосуточно, 7 дней в неделю.

Запросить экстренную поддержку support@kinetikatech.com