12
Juli
2023
17:25

Замена утилиты Wget на Wget2

12 Juli 2023 17:25

Утилита Wget2 предоставляет те же возможности, что и Wget, но скорость работы повышена в 5-10 раз за счёт параллельного выполнения запросов.

Чтобы скачать сайт целиком (mirror) или проверить существующий сайт на битые ссылки (404) или скачать один файл, используется утилита командной строки Wget. Существует бесплатная и улучшенная замена данной утилиты - Wget2, написанная другим программистом.

Главное улучшение Wget2 — многопоточность, за счёт чего происходит ускорение загрузки сайта или его "обхода" по ссылкам в 5-10 раз.

Программу необходимо собрать из исходных кодов.

https://github.com/rockdaboot/wget2

  1. Вначале я обновил пакеты:

    sudo apt-get update
    sudo apt-get upgrade

  2. Установил пакеты, необходимые для компиляции:

    sudo apt-get install autoconf autogen automake autopoint libtool python3 rsync tar pkg-config doxygen pandoc gettext libgnutls30 libidn12 flex libpsl5 libnghttp2-14 lcov

  3. Компиляция и установка

По инструкции для неё "Downloading and building from tarball":

wget https://gnuwget.gitlab.io/wget2/wget2-latest.tar.gz
tar xf wget2-latest.tar.gz
cd wget2-
./configure
make
make check
sudo make install

Программа установится в папку /usr/local/bin/wget2

  1. Вызов справки:

    man wget2

Использование утилиты wget2 не отличается от wget - ключи программы те же.

  1. Пример запуска: проверка сайта на "битые" ссылки 404:

    wget2 -o out.log -m -l 3 --save-content-on "404" -T 2 http://example.com/

где:
-o - файл журнала
-m - "mirror" - зеркальная копия с папками и файлам
-l 3 - уровень вложенности при переходах
--save-content-on "404" - сохранять только при возврате кода 404
-T 2 - время ожидания ответа.

Будут сохранены только служебные страницы типа "404", которые не были найдены в результате обхода сайта по внутренним ссылкам, с адресами, по которым можно вычислить некорректные ссылки.

При этих настройках запросы будут производиться непрерывно, что оптимально для локальных веб-сайтов.
Для чужих веб-сайтов рекомендую добавить паузу -w 2 - время ожидания в секундах (2с) между запросами.


MAN Wget2 на русском языке

WGET2(1) GNU Wget2 2.0.1 WGET2(1)

Имя
Wget2 - рекурсивный загрузчик метассылок / файлов / веб-сайтов.

Краткий обзор
wget2 [параметры]... [URL]...

Описание
GNU Wget2 - это бесплатная утилита для неинтерактивной загрузки файлов из Интернета. Она поддерживает протоколы HTTP и HTTPS, а также извлечение информации через HTTP(s) прокси.

Wget2 не интерактивен, это означает, что он может работать в фоновом режиме, в то время как пользователь не вошел в систему. Это позволяет вам запустить извлечение информации и отключиться от системы, позволив Wget2 закончить свою работу. Напротив, большинство веб-браузеров требуют постоянного присутствия пользователя, что может стать большой помехой при переносе большого объема данных.

Wget2 может переходить по ссылкам в файлах HTML, XHTML, CSS, RSS, Atom и sitemap для создания локальных версий удаленных веб-сайтов, полностью воссоздавая структуру каталогов исходного сайта. Что иногда называют рекурсивной загрузкой. При этом, Wget2 уважает стандарт исключения роботов (/robots.txt ). Wget2 можно проинструктировать преобразовать ссылки в загруженных файлах, чтобы они указывали на локальные файлы для просмотра в автономном режиме.

Wget2 был разработан для обеспечения надежности через медленные или нестабильные сетевых подключениях; если загрузка завершается неудачей из-за проблемы с сетью, утилита будет повторять попытку до тех пор, пока не будет восстановлен весь файл. Если сервер поддерживает частичную загрузку, она будет продолжена с того места, где была прервана.

Опции Wget2

Синтаксис опций

Опции - это необязательные дополнительные параметры, с помощью которых можно управлять поведением программы. - прим. переводчика.

Каждый вариант опции имеет длинную форму, а иногда и короткую. Длинные опции удобнее запоминать, но они занимают больше времени при вводе. Вы можете свободно смешивать различные стили опций. Таким образом, вы можете написать:

wget2 -r --tries=10 https://example.com/ -o log

Пробел между опцией, принимающей аргумент, и самим аргументом может быть опущен. Вместо -o log вы можете написать -olog.

Вы можете объединять несколько опций, которые не требуют аргументов, вроде:

wget2 -drc URL

Что эквивалентно

wget2 -d -r -c URL

Поскольку другие опции могут быть указаны после аргументов, вы можете отделить их с помощью --. Так, следующая команда попытается загрузить -x URL, и сообщит о сбое в журнал log:

wget2 -o log -- -x URL

Опции, которые умеют принимать списки аргументов, разделенных запятыми, соблюдают соглашение, что добавление -no - очищает его значение. Это может быть полезно для очистки настроек .wgetrc. Например, если ваш .wget2rc устанавливает exclude-directories в /cgi-bin, то опция --no-exclude-directories сначала сбросит данный параметр, а затем установит для него значение exclude /priv и /trash. Также Вы также можете очистить списки в файле .wget2rc.

wget2 --no-exclude-directories -X /priv,/trash

Большинство опций, которые не принимают аргументы, являются логическими опциями, названными так потому, что их состояние может быть зафиксировано с помощью переменной “да” или "нет" ("boolean"). Логический параметр может быть либо утвердительным, либо отрицательным (начинающимся с --no-). Все такие варианты имеют несколько общих свойств.

Утвердительные опции могут быть преобразованы в отрицающие путем добавления к имени опции приставки --no-; Отрицающие опции могут быть преобразованы в утвердительные пропуском префикса --no-. Это может показаться излишним - если по умолчанию для "позитивной" опции - это не делать что-то, то зачем предоставить способ явного выключения этого? Но файл запуска может на самом деле изменить умолчания. Например, использование в .wget2rc опции TimeStamping=on указывает WGET2 загружать только обновленные файлы. Использование опции --no-timestamping - это единственный способ восстановить фабричное значение опции по умолчанию из командной строки.

Основные опции запуска Wget2

-V, --version
Отобразить версию Wget2.

-h, -help
Распечатайте справочное сообщение, описывающее все параметры командной строки WGET2.

-b, --background
Перевести выполнение приложения в фон сразу после запуска. Если выходной файл не указан через -o, выход перенаправляется в файл "wget-log".

-e, -execute-command
Выполнить команду, как если бы она была частью .wget2rc. Заявленная таким образом команда будет выполнена после команд в .wget2rc, таким образом, превышая её приоритет. Если вам нужно указать более одной команды WGET2RC, используйте несколько экземпляров -e.

--hyperlink
Использовать гиперссылки вместо имен загруженных файлов, чтобы они могли открываться из терминала, нажатием на них. Только несколько эмуляторов терминалов в настоящее время поддерживают гиперссылки. Включите эту опцию, если вы знаете, что ваш терминал поддерживает гиперссылки.

Параметры журнала и входного файла

-o,--output-file = logfile
Выводить все сообщения времени выполнения в файл журнала logfile. В противном случае сообщения об ошибках выводятся в стандартный поток.

-a,-append-output = logfile
Добавить в файл журнала. Это то же самое, что и -o, только добавлять к журналу, а не перезаписывать старый файл журнала. Если log-файл не существует, создается новый файл.

-d, --debug
Включить отладку, что означает различную информацию, важную для разработчиков WGET2, если она не работает должным образом. Поскольку системный администратор, возможно, решил компилировать wget2 без поддержки отладки, и в этом случае -d не будет работать. Пожалуйста, обратите внимание, что компиляция с поддержкой отладки всегда безопасна, WGET2 скомпилированный с поддержкой отладки не будет выводить отладочные сообщения, пока опция -d не будет указана явно.

-q, -quiet
Выключить вывод из WGET2.

-v, --verbose
Включить многословный вывод со всеми доступными данными. Вывод является многословным по умолчанию.

-nv, --no-verbose
Отключить многословный вывод. Данный режим не является совершенно тихим (используйте -Q для этого), что означает, что сообщения об ошибках и базовая информация все еще будут печататься.

--report-speed=type
Выводить горизонтальную полосу индикатора скорости со значениям скорости в type. Единственными принятыми значениями type являются bytes (которые установлены по умолчанию) и bits. Эта опция работает только если --progress=bar также установлена.

-i,--input-file=file
Читать URL-адреса из локального или внешнего файла file со списком URL. Если "-" указан в качестве файла, URL -адреса считываются с стандартного ввода. Используйте ./- чтобы читать из файла буквально названного "./-".

Если используется данная опция, указание URL-адреса в командной строке не требуются. Если есть URL как на командной строке, так и в --input-file file, то адреса переданные в командных строках, будут первыми при извлечении. Ожидается, что в файле находится список адресов, один URL-адрес в строке, за исключением одной из опций --force-, указывающих на другой формат.

Если вы указали --force-html, документ будет рассматриваться как HTML. В этом случае у вас могут быть проблемы с относительным ссылками, которые вы можете решить, добавив «base href = "url"» в документы или указав --base=url в командной строке.

Если вы указали --force-css, документ со ссылками будет рассматриваться как CSS.

Если вы указали --force-sitemap, документ будет рассматриваться как XML SiteMap.

Если вы указали --force-atom, документ будет рассматриваться как фид - канал Atom.

Если вы указали --force-rss, документ будет рассматриваться как фид - канал RSS.

Если вы указали --force-metalink, документ будет рассматриваться как описание Metalink.

Если у вас есть проблемы с относительными ссылками, вам следует использовать --base=url в командной строке.

-F, --force-html
Когда в качестве входного файла опции --input-file=file рассматривается веб страница, заставьте рассматривать её как HTML -файл. Это позволит вам извлекать файлы по относительным ссылкам из существующих HTML-файлов на вашем локальном диске, или добавлением “” в HTML, или используя параметр -base в командной строке.

--force-css
Читать и разбирать входной файл как CSS. Это позволяет вам извлекать ссылки из существующих файлов CSS на вашем локальном диске. Вам понадобится ключ -base для правильной обработки относительных ссылок.

--force-sitemap
Читать и разбирать входной файл как Sitemap XML. Это позволяет вам извлекать ссылки из существующих файлов Sitemap на вашем локальном диске. Вам понадобится ключ -base для правильного обработки относительных ссылок.

--force-atom
Читать и разбирать входной файл как фид Atom XML. Это позволяет вам извлекать ссылки из существующих файлов фидов Atom XML на вашем локальном диске. Вам понадобится ключ -base для правильного обработки относительных ссылок.

--force-rss
Читать и разбирать входной файл как фид RSS XML. Это позволяет вам извлекать ссылки из существующих файлов фидов RSS XML на вашем локальном диске. Вам понадобится ключ -base для правильного обработки относительных ссылок.

--force-metalink
Читать и разбирать входной файл как файл Metalink. Это позволяет вам получать ссылки из существующих файлов Metalink на вашем локальном диске. Вам понадобится ключ -base для правильного обработки относительных ссылок.

-B, --base=URL
Разрешает относительные ссылки с использованием URL в качестве точки отсчета, при чтении ссылок из HTML -файла, указанного через опцию -i/input -файл (вместе с опцией -force... или когда входной файл был извлечен удаленно с Сервера, описывающий его как HTML, CSS, Atom или RSS). Это эквивалентно наличию тега "BASE" во входном файле HTML, с URL в качестве значения для атрибута «href».

Например, если вы указываете https://example.com/bar/a.html для базового URL, а Wget2 из ссылки ../baz/b.html во входном файле, извлечет файл по адресу https://example.com /baz/b.html.

--config=FILE
Укажите местоположение файлов конфигурации, которые вы хотите использовать. Если вы указываете более одного файла, либо используя список, разделяемый запятыми, либо несколько вариантов конфигурации, эти файлы читаются в порядке слева направо. Файлы, приведенные в переменных окружения $SYSTEM_WGET2RC и ($WGET2RC или ~/.wget2rc), считываются в этом порядке, а затем предоставленные пользователем файлы конфигурации. Если указан, $WGET2RC заменяет ~/.wget2rc.

--no-config
Очищает внутренний список файлов конфигурации. Поэтому, если вы хотите предотвратить чтение каких-либо файлов конфигурации, задайте в командной строке ключ --no-config.

--no-config за которым следует --config=file пропускает чтение стандартных файлов и просто читает файл конфигурации file.

Wget попытается на поддерживаемых платформах раскрыть записанные в файле конфигурации имена файлов с тильдой ~ как имя каталога пользователя. Чтобы использовать файл, который начинается с буквального символа `~ ', используйте «./~» или абсолютный путь.

--rejected-log=logfile [Пока не реализовано]
Записывает в журнал все отозванные URL файлов конфигурации в виде списка через запятую. Значения включают причину отклонения, URL и родительского URL, который он был найден.

--local-db
Разрешает чтение / запись в локальную базу данных файлов (по умолчанию: включено).

Есть файлы для --hsts, --hpkp, --ocsp, и т.д..

При указании --no-local-db вы можете отключить чтение / запись, что удобно для тестирования.
Данная опция не влияет на чтение файлов конфигурации.

--stats-dns=[FORMAT:]FILE
Сохраняет статистику DNS в формате FORMAT, в файл FILE.
FORMAT может принимать значения "human" или "csv".
Выходной файл "-" означает поток stdout и "h" сокращение формата для чтения человеком (human).

Формат выходного CSV файла следующий:
Hostname, IP, Port, Duration
где:
"Duration" - время ответа указано в миллисекундах.

--stats-tls=[FORMAT:]FILE
Сохранять статистику (защищенных подключений) TLS в формате FORMAT, в файл FILE.
FORMAT может принимать значения "human" или "csv".
Выходной файл "-" означает поток stdout и "h" сокращение формата для чтения человеком (human).

Формат выходного CSV файла следующий:
Hostname, TLSVersion, FalseStart, TFO, Resumed, ALPN, HTTPVersion, Certificates, Duration
где:
Tlsversionможет быть 1,2,3,4,5 для SSL3, TLS1.0, TLS1.1, TLS1.2 и TLS1.3. -1 означает «нет». Falsestart- использовалось ли соединение False Start. -1, если не применимо. Tfo- используется ли соединение быстрое открытие соединений TCP "fast open". -1 если TFO был отключен. Resumed- был ли сеанс TLS возобновлен или нет. ALPN- это строка переговоров ALPN. HTTPVersion- равен 0 для HTTP 1.1, а 1 - для HTTP 2.0. Certificates- это размер цепочки сертификатов сервера. Duration` - длительность указывается в миллисекундах.

--stats-ocsp=[FORMAT:]FILE
Сохранять OCSP статистику формата FORMAT, в файл FILE.
FORMAT может быть "human" или "csv". Выходной файл "-" означает поток stdout и "h" сокращение формата для чтения человеком (human).

Формат выходного CSV файла следующий:
Hostname, Stapling, Valid, Revoked, Ignored

где:
Stapling был ли OCSP ответ сшит или нет.
Valid как много сертификатов сервера были валидны в отношении OCSP.
Revoked как много сертификатов сервера были отозваны в отношении OCSP.
Ignored как много сертификатов сервера были проигнорированы в отношении OCSP.

--stats-server=[FORMAT:]FILE
Сохранять статистику Сервера в формате FORMAT, в файл FILE.
FORMAT может быть "human" или "csv". Выходной файл "-" означает поток stdout и "h" сокращение формата для чтения человеком (human).

Формат выходного CSV файла следующий:
Hostname, IP, Scheme, HPKP, NewHPKP, HSTS, CSP
где:
Scheme - значения 0,1,2 означают, соответственно, None, http, https.
HPKP - HTTP Public Key Pinning значения 0,1,2,3 означают 'No HPKP', 'HPKP совпадают', 'HPKP не совпадают', 'HPKP ошибка'.
NewHPKP - прислал ли сервер заголовок HPKP (Public-Key-Pins)
HSTS - прислал ли сервер заголовок HSTS (Strict-Transport-Security)
CSP - прислал ли сервер заголовок CSP (Content-Security-Policy).

--stats-site=[FORMAT:]FILE
Сохранять статистику сайта в формате FORMAT, в файл FILE.
FORMAT может быть "human" или "csv". Выходной файл "-" означает поток stdout и "h" сокращение формата для чтения человеком (human).

Формат выходного CSV файла следующий:
ID, ParentID, URL, Status, Link, Method, Size, SizeDecompressed, TransferTime, ResponseTime, Encoding, Verification
где:
ID - уникальный ID для записи статистики.
ParentID - ID родительского документа, относится к режиму рекурсии --recursive.
URL - URL (адрес) документа.
Status - HTTP код ответа или 0 если не применимо.
Link - 1 означает 'прямая ссылка', 0 означает 'перенаправленная ссылка'.
Method - 1,2,3 означают типы запросов GET, HEAD, POST.
Size - размер загруженного тела (и теоретическое значение у запросов HEAD).
SizeDecompressed - размер разжатого тела (и 0 для запросов HEAD).
TransferTime - время в миллисекундах между началом запроса и завершением загрузки.
ResponseTime - время в миллисекундах между началом запроса и первым откликом на пакет.
Encoding - 0,1,2,3,4,5 означает тип сжатия на сервере: 'identity', 'gzip', 'deflate', 'lzma/xz', 'bzip2', 'brotli', 'zstd', 'lzip'
Verification статус проверки PGP. 0,1,2,3 означают 'none', 'valid', 'invalid', 'bad', 'missing'.

Опции скачивания

-bind-address=ADDRESS
При создании клиентских соединений TCP/IP, привязываться к определенному IP адресу на локальной машине. Адрес может быть указан как имя хоста или IP-адрес. Эта опция может быть полезна, если ваша машина имеет несколько IP-адресов.

--bind-interface=INTERFACE
При создании клиентских подключений TCP/IP, привязываться к интерфейсу на локальной машине. Интерфейс может быть указан в качестве имени сетевого интерфейса. Эта опция может быть полезна, если на вашем компьютере есть несколько сетевых интерфейсов. Тем не менее, опция работает только тогда, когда wget2 запускается с повышенными привилегиями (на GNU / Linux: root / sudo или sudo setcap cap_net_raw+ep «path to wget | wget2»).

-t, --tries=number
Установить число попыток. Укажите 0 или Inf для бесконечного повторения. По умолчанию программа будет повторить запросы 20 раз, за исключением фатальных ошибок, таких как «в соединении отказано» или «не найдено» (404), которые не подвергаются повторам.

--retry-on-http-error=list
Укажите разделенный запятой список кодов HTTP, для которых WGET2 будет выполнять повтор загрузки. Элементы списка могут содержать подстановочные знаки. Если код HTTP начинается с символа ! этот код не будет загружен. Опция бывает полезна при попытке скачать что-то за исключением. Например, повторно повторить каждую неудачную загрузку, за исключением кода ошибки 404:
wget2 --retry-on-http-error=*,!404 https://example.com/

Пожалуйста, имейте в виду, что «200» - единственный запретный код. Если он включен в список статуса, wget2 будет игнорировать его. Максимальное количество попыток загрузки задается опцией --tries.

-O, --output-document=file
Документы не будут записаны в соответствующие отдельные файлы, но будут объединены все вместе и записаны в файл file. Если «-» используется в качестве файла, документы будут напечатаны на стандартный вывод, отключая конверсию ссылок. Используйте ./- для печати в файл буквально названный «-». Чтобы не получить сообщения о состоянии WGET2, смешанные с содержимым файла, используйте -q в комбинации с "-" (это отличается от того, как ведет себя WGET 1.x).

Использование "-r" или "-p" с "-o" может не работать, как вы ожидаете: Wget2 не будет просто загружать первый файл в файл, а затем загрузить остальные на их обычные имена: весь загруженный контент будет размещен в файле.

Комбинация с -NC принимается только в том случае, если данного выходного файла не существует.

При использовании вместе с опцией "-c" WGET2 попытается продолжить загрузку файла, имя которого передается в опцию, независимо от того, существует ли фактический файл на диске или нет. Это позволяет пользователям загружать файл с временным именем рядом с существующим файлом.

Обратите внимание, что комбинация с "-k" разрешена только при загрузке одного документа, так как в этом случае она просто преобразует все относительные URI во внешние; "-k" не имеет смысла для нескольких URI, когда они все загружаются в один файл; "-k" может использоваться только тогда, когда выход является обычным файлом.

Замечание про совместимость: WGET 1.X, при обработке ключа "-o" использует механизм, аналогичный перенаправлению shell-оболочки. Wget2 не обрабатывает опцию аналогичным образом. Следовательно, файл не всегда будет создан вновь. Временные метки файла не будут затронуты, если он не будет записан на самом деле. В результате, оба варианта "-c" и "-n" теперь поддерживаются в сочетании с этой опцией.

-nc, --no-clobber
Если файл загружается более одного раза в одном и том же каталоге, поведение Wget2 зависит от нескольких вариантов, включая -nc.

В некоторых случаях локальный файл будет испорчен или перезаписан при повторной загрузке. В других случаях же оригинальный файл будет сохранен.

При запуске wget2 без "-n", "-nc", "-r" или "-p" загрузка одного и того же файла в том же каталоге приведет к тому, что исходная копия файла сохраняется, и рядом будет создаваться экземпляр файла с именем file.1. Если этот файл будет загружен снова, будет создана третья копия с названием file.2 и так далее. (Это также поведение с -nd, даже если -Р или -p действуют.) Используйте --keep-extension для использования альтернативного шаблона именования файлов.

Когда задано -NC, это поведение (file.1, file.2) подавляется, и WGET2 откажется загружать новые копии файла. Следовательно, "--no-clobber"на самом деле является неправильным названием этого режима - это не перезапись, которая предотвращается (поскольку числовые суффиксы уже предотвратили её), а скорее предотвращение создания множества версий одного файла.

При запуске wget2 с ключами "-r" или "-p", но без "-N", "-nd" или "-nc", повторная загрузка файла приведет к загрузке новой версии, которая затрёт старую. Добавление -NC предотвратит это поведение, вместо этого приведет к тому, что исходная версия будет сохранена и любые новые копии файла на сервере будут проигнорированы.

При запуске wget2 с ключом "-N", с или без "-r" или -p, решение о том, следует ли загружать более новую копию файла, зависит от локальной и удаленной метки времени и размера файла. Ключ -nc не может быть указан вместе с -N. Комбинация с "-O" / --output-document принимается только в том случае, если данного выходного файла не существует.

Обратите внимание, что когда указан -nc, файлы с суффиксами .html или .htm будут загружены с локального диска и анализируются, как если бы они были извлечены из Интернета.

--backups=backups
Перед перезаписью файла, создавать резервную копию существующего файла, добавив суффикс .1 к имени файла. Такие файлы резервного копирования создаются с именами, заканчивающимися .2, .3 и т. д., - резервными копиями (и потеряны за пределами этого).

-c, --continue
Продолжить получение частично загруженного файла. Это полезно, когда вы хотите закончить загрузку, начатую предыдущим экземпляром WGET2 или другой программой. Например:

wget2 -c https://example.com/tarball.gz

Если в текущем каталоге есть файл с именем tarball.gz, WGET2 будет считать, что это первая часть загружаемого файла, и попросит сервер продолжить поиск из смещения, равного длине локального файла.

Обратите внимание, что вам не нужно указывать эту опцию, если вы просто хотите, чтобы текущий вызов WGET2 повторил загрузку файла, если соединение будет разорвано по середине передачи. Это поведение по умолчанию. Ключ "-c" влияет только на возобновление загрузок, начатое до этого вызова Wget2, и чьи локальные файлы имеются.

Без "-c" в предыдущем примере WGET2 будет просто загружать из Интернета файл с именем Tarball.gz.1, оставив усеченный файл tarball.gz рядом.

Если вы используете "-c" с непустым файлом, и оказывается, что сервер не поддерживает продолжение загрузки ("докачку"), Wget2 откажется запускать загрузку с нуля, что эффективно разрушит существующее содержимое файла. Если вы действительно хотите, чтобы загрузка началась с нуля, удалите файл.

Если вы используете ключ "-c" с файлом, который имеет одинаковый размер с тем, что на сервере, Wget2 откажется загружать файл и распечатать объяснительное сообщение. То же самое происходит, если файл на сервере меньше, чем локальный (предположительно, потому что он был изменен на сервере с момента вашей последней попытки загрузки). Поскольку «продолжение» не имеет смысла, загрузка не происходит.

На другой стороне монеты, при использовании "-c" любой файл, который больше на сервере, чем локально, будет считаться неполной загрузкой и только «(длина (удаленная) - длина (локальная))» будут загружены и прикреплены на конец локального файла. Такое поведение может быть желательным в некоторых случаях. Например, вы можете использовать wget2 -c для загрузки только новой части, которая была добавлена в конец собираемых данных или к файлу журнала.

Однако, если файл больше на сервере, потому что он был изменен, а не только что придается, вы получите искаженный файл. WGET2 не может подтвердить, что локальный файл действительно является действительным префиксом удаленного файла. Вы должны быть особенно осторожны с этим при использовании -C в сочетании с -R, поскольку каждый файл будет рассматриваться как кандидат «неполной загрузки».

Еще один экземпляр, в котором вы получите искаженную файл, если вы попытаетесь использовать -c, -это если у вас есть кривой HTTP-прокси, который вставляет строку «трансфер» в локальный файл. В будущем опция «отката» может быть добавлена для рассмотрения этого случая.

Обратите внимание, что -c работает только с HTTP-серверами, которые поддерживают заголовок «RANGE».

--start-pos=OFFSET
Начинать загрузку со смещением позиции относительно ноля. Смещение может быть выражено в байтах, килобитах с суффиксом 'k' или мегабайтами с суффиксом 'm' и т. д.

--start-pos имеет более высокий приоритет над --continue. Когда указаны обе опции --start-pos и --continue, WGET2 выведет предупреждение о конфликте.

От сервера требуется поддержка продолжения загрузки, в противном случае --start-pos не сможет помочь. Смотрите описание опции "-c" для деталей.

--progress=type
Выберите тип индикатора прогресса, который вы хотите использовать. Поддерживаемые типы индикаторов - это "none" и "bar".

Тип "bar" рисует графику с шариком прогресса ASCII (a.k.a «Термометр»), указывающий на состояние выполнения.

Если вывод является консолью TTY, то "bar" используется по умолчанию. Иначе, панель прогресса будет выключена, за исключением случаев использования --force-progress.

Тип "dot" в настоящее время не поддерживается, но не вызовет ошибку, чтобы не сломать командные файлы WGET.

Параметризованные типы панели: "bar:force" и "bar:force:noscroll" добавляют эффект --force-progress. Это сделано для лучшей совместимости с WGET.

--force-progress
Включает в wget2 отображение панели индикатора прогресса выполнения (панели прогресса).

По умолчанию Wget2 отображает только панель прогресса выполнения в режиме "--verbose". Однако кому-то может потребоваться, чтобы WGET2 отобразил панель хода выполнения на экране в сочетании с любыми другими режимами, такими как "–no-verbose" или "–quiet". Это часто является желаемой свойством при вызове WGET2 для загрузки нескольких небольших / больших файлов. В таком случае WGET2 может быть просто вызван с помощью этого параметра, чтобы получить более чистый выход на экране.

Этот вариант также заставит панель прогресса быть выведенной в поток STDERR при использовании вместе с опцией "--output-file".

-N, --timestamping
Включить временные метки файлов.

-no-if-modified-since
В режиме "-N" не отправлять заголовок "Если-Изменен-С". Вместо этого, отправлять начальный запрос HEAD. Имеет эффект только в режиме "-N".

--no-use-server-timestamps
Не приводить дату и время локальных файлов к датам и времени на сервере.

По умолчанию, когда файл загружается, его временные метки устанавливаются так, чтобы соответствовать тем, что на удаленном файле на сервере. Это позволяет использовать временные метки при последующих вызовах WGET2. Тем не менее, иногда полезно оставлять временную метку локального файла таким, когда он была фактически загружен впервые; Для этого был предоставлена опция –no-server-timestamps.

-S, --server-response
Печатать заголовки ответов, отправленные HTTP серверами.

--spider
При вызове с этой опцией Wget2 будет вести себя как веб-паук, что означает, что он не будет загружать страницы, просто проверяя что они на месте. Например, вы можете использовать wget2, чтобы проверить свои закладки.

Например, вы можете использовать wget2 для проверки файла закладок bookmarks.html:

wget2 --spider --force-html -i bookmarks.html

Эта функция требует гораздо большей работы для Wget2, чтобы приблизиться к функциональности реальных веб-пауков.

-T seconds, --timeout=seconds
Установите сетевой тайм-аут на seconds секунд. Это эквивалентно указанию --dns-timeout, --connect-timeout, и --read-timeout на одно и то же время.
При взаимодействии с сетью Wget2 может проверить тайм-аут и прервать операцию, если она займет слишком много времени. Это предотвращает аномалии, такие как зависание чтения и бесконечные соединения. Единственный тайм-аут, включенный по умолчанию,-это тайм-аут чтения на 900 секунд. Установка тайм -аута на 0 отключает его вообще. Если вы не знаете, что делаете, лучше не менять настроек тайм-аута по умолчанию.

Все параметры, связанные с тайм-аутом, принимают десятичные значения, а также дробные значения. Например, 0.1 секунды является законным (хотя и неразумным) выбором тайм-аута. Тайм-ауты под разделами полезны для проверки времени отклика сервера или для тестирования задержки сети.

--dns-timeout=seconds
Устанавливает DNS Timeout на seconds секунд. Поиск DNS, которые не завершен в течение указанного времени, потерпит неудачу. По умолчанию тайм-аута на поиск DNS нет, кроме того, что реализовано системными библиотеками.

--connect-timeout=seconds
Устанавливает тайм-аут подключения на seconds секунд. Соединения TCP, которые займут больше времени, будут прерваны. По умолчанию тайм-аута подключения нет, кроме того, что реализовано системными библиотеками.

--read-timeout=seconds
Устанавливает тайм-аут для чтения (и запись) на seconds секунд. «Время» этого тайм-аута относится к временному простою: если в любой момент загрузки данные не получены более чем на указанное количество секунд, чтение сбоя и загрузка перезапускаются. Этот вариант напрямую не влияет на продолжительность всей загрузки.

Конечно, удаленный сервер может решить разорвать соединение раньше, чем сработает данная опция. Тайм-аут для чтения по умолчанию составляет 900 секунд.

--limit-rate=amount
Ограничивает скорость загрузки на сумму байтов в секунду. Сумма может быть выражена в байтах, килобитах с суффиксом K или мегабайтами с суффиксом M. Например, –limit-rate = 20K ограничит скорость выборки до 20 КБ/с. Это полезно, когда, по какой-то причине, вы не хотите, чтобы Wget2 потреблял всю доступную полосу пропускания.

Эта опция позволяет использовать десятичные числа, обычно в сочетании с суффиксами размерности; Например, –limit-rate = 2.5K является легальным значением.

Обратите внимание, что WGET2 реализует ограничение, засыпанием после загрузки на время, соответствующее количеству времени после чтения сети, которая заняла меньше времени, чем указано в значении скорости. В конечном итоге эта стратегия приводит к замедлению передачи TCP до приблизительно указанной скорости. Тем не менее, может потребоваться некоторое время, чтобы этот баланс был достигнут, поэтому не удивляйтесь, если ограничение скорости не работает с очень небольшими файлами.

-w seconds, --wait=seconds
Ожидать указанное количество секунд между запросами. Рекомендуется использовать эту опцию, так как он снижает нагрузку на сервер, делая запросы менее частыми. Вместо секунд, время может быть указано в считанные минуты, используя суффикс «M», в часы, используя суффикс «H» или в дни, используя суффикс «D».

Указание большого значения для этой опции полезно, если сеть или хост назначения "лежит" (находятся в состоянии аварии), так что WGET2 может подождать достаточно долго, чтобы разумно ожидать, что ошибка сети будет исправлена до повторной попытки. Интервал ожидания, указанный этой функцией, подвергается влиянию опцией «--random-wait», при наличии.

--waitretry=seconds
Если вы не хотите, чтобы WGET2 ждал между каждым запросом, но только между запросами после неудачных загрузок, вы можете использовать эту опцию. WGET2 будет использовать линейный откат, ожидая через 1 секунду после первого сбоя в данном файле, а затем ожидает через 2 секунды после второго сбоя в этом файле, до максимального количества секунд, которые вы указываете.

По умолчанию Wget2 использует значение равное 10 секундам.

--random-wait
Некоторые веб-сайты могут выполнять "на лету" анализ журналов для выявления программ скачивания файлов, таких как WGET2, ища статистически значимые сходства во времени между запросами. Этот вариант приводит к тому, что время между запросами варьируется от 0,5 до 1,5 секунд. С помощью использования опции --random-wait вы можете попытаться замаскировать от такого анализа присутствие Wget2.

--no-proxy[=exceptions]
Если аргумент опции не указан, Wget2 старается оставаться в обратном отношении совместим с wget1.x и не использовать прокси-серверы, даже если определена соответствующая переменная среды *_proxy.

Если в аргументе опции приведен список исключений (доменов/IP-адресов), разделенных запятыми, эти исключения будут загружаться без использования прокси. Опция превосходит переменную среды no_proxy.

-Q quota, --quota=quota
Укажите квоту (ограничение объёма) при автоматической загрузке. Значение quota может быть указано в байтах (по умолчанию), килобиты (с суффиксом "k"), или в мегабайтах (с суффиксом "M").

Обратите внимание, что квота никогда не повлияет на загрузку одного файла. Так что, если вы указываете

wget2 -q10k https://example.com/bigfile.gz

Файл bigfile.gz будет загружен все равно. То же самое происходит, даже когда в командной строке указаны несколько URL. Однако квота будет применена при рекурсивной загрузке, либо по списку из входного файла. Таким образом, вы можете безопасно выполнять команду (не опасаясь переполнения жесткого диска):

wget2 -q2m -i сайты

Загрузка будет прервана, если квота будет превышена.

Установка квоты на 0 или Inf снимает предел с квоты загрузки.

--restrict-file-names=modes
Настроить, какие символы, найденные в удаленных URL-адресах, должны быть заменены на escape-последовательности при создании локальных имен файлов. Символы, запрещенные этой опцией, экранируются, т. е. заменяются на %HH, где HH — шестнадцатеричное число, соответствующее запрещенному символу. Эта опция также может быть использована для принудительного перевода всех алфавитных регистров в нижний или верхний регистр.

По умолчанию Wget2 экранирует символы, которые не являются допустимыми или безопасными как часть имен файлов в вашей операционной системе, а также управляющие символы, которые обычно непечатаемы. Этот параметр полезен для изменения этих значений по умолчанию, возможно, потому, что вы загружаете сайт не в собственный раздел файловой системы, или потому что вы хотите отключить экранирование управляющих символов, или вы хотите дополнительно ограничить символы только теми, которые находятся в диапазоне значений кодовой таблицы ASCII.

Режимы представляют собой набор текстовых значений, разделенных запятыми. Допустимые значения: "unix", "windows", "nocontrol", "ascii", "lowercase" и "uppercase". Значения "unix" и "windows" являются взаимоисключающими (одно переопределяет другое), как и "lowercase" исключает "uppercase". Последние два являются особыми случаями, поскольку они не изменяют набор символов, которые будут экранированы, а скорее заставляют локальные пути к файлам преобразовываться либо в нижний, либо в верхний регистр.

Когда указано значение “unix”, Wget2 экранирует символ или символы и управляющие последовательности в диапазонах символов 0–31 и 128–159. Это является значением по умолчанию в Unix-подобных операционных системах.

Когда задано значение “windows”, Wget2 экранирует символы " ", |, /, :, ?, ", *, «, », и управляющие символы в диапазонах 0–31 и 128–159. В дополнение к этому, Wget2 в режиме Windows использует + вместо : для разделения имени хоста от порта в именах локальных файлов, и использует @ вместо ? для разделения части URL имени файла от остальной части запроса. Поэтому, URL который сохранился бы как www.xemacs.org:4300/search.pl?input=blah в режиме Unix был бы сохранен как www.xemacs.org+4300/search.pl@in‐put=blah в режиме Windows. Это режим по умолчанию в ОС Windows.

Если вы укажете nocontrol, то экранирование управляющих символов также отключается. Этот параметр может иметь смысл, когда вы загружаете URL-адреса, имена которых содержат символы UTF-8, в системе, которая может сохранять и отображать имена файлов в UTF-8 (некоторые возможные значения байтов, используемые в последовательностях байтов UTF-8, попадают в диапазон значений, обозначенных Wget2 как «управляющие символы»).

Режим ascii используется для указания того, что любые байты, значения которых выходят за пределы диапазона символов ASCII (то есть больше 127), должны быть экранированы. Это может быть полезно при сохранении имен файлов, кодировка которых не совпадает с используемой локально.

-4, --inet4-only, -6, --inet6-only
Заставить программу подключаться к IPv4 или IPv6 адресам. С ключом --inet4-only или -4, Wget2 будет подключаться только к IPv4 хостам, игнорируя AAAA записи в DNS, и запрещая подключаться к IPv6 адресам указанным в URL-ях. Наоборот, с –inet6-only или -6, Wget2 будет подключаться только IPv6 машинам и будет игнорировать A записи и адреса IPv4.

Ни одна из опций обычно не нужна. По умолчанию Wget2 с поддержкой IPv6 будет использовать семейство адресов, указанное в записи DNS хоста. Если DNS отвечает адресами IPv4 и IPv6, Wget2 будет пробовать их последовательно, пока не найдет тот, к которому можно подключиться. (См. также опцию «--prefer-family», описанную ниже.)

Эти параметры можно использовать для преднамеренного принудительного использования семейств адресов IPv4 или IPv6 в системах с двумя семействами, обычно для облегчения отладки или исправления неправильной конфигурации сети. Одновременно может быть указан только один из вариантов --inet6-only или --inet4-only. Ни один из вариантов недоступен в Wget2, скомпилированном без поддержки IPv6.

--prefer-family=none/IPv4/IPv6

Когда предоставляется выбор из нескольких IP-адресов, сначала подключитесь к адресам с указанным семейством адресов. Порядок адресов, возвращаемый DNS, по умолчанию используется без изменений.

Это позволяет избежать ложных ошибок и попыток подключения при доступе к узлам, которые разрешаются как в адреса IPv6, так и в адреса IPv4 из сетей IPv4. Например, www.kame.net разрешается в 01:200:0:8002:203:47ff:fea5:3085 и в 203.178.141.194. Когда предпочтительным семейством является «IPv4», сначала используется адрес IPv4; когда предпочтительным семейством является «IPv6», сначала используется адрес IPv6; если указано значение «none», порядок адресов, возвращаемый DNS, используется без изменений.

В отличие от -4 and -6, эта опция не запрещает доступ к какому-либо семейству адресов, она только изменяет порядок доступа к адресам. Также обратите внимание, что переупорядочивание, выполняемое этой опцией, является стабильным. Это не влияет на порядок адресов одного и того же семейства. То есть относительный порядок всех адресов IPv4 и всех адресов IPv6 остается неизменным во всех случаях.

--tcp-fastopen
Включает поддержку TCP Fast Open (TFO) (по умолчанию: включено).

TFO снижает задержку соединения на 1 цикл приёма-передачи на «горячих» соединениях (2-е соединение с одним и тем же хостом за определенное время).
В настоящее время это работает на последних ядрах Linux и OSX, на HTTP и HTTPS.

--dns-cache-preload=file
Загружать список кортежей (ресурсных записей DNS) из файла IP/Имен в кеш DNS.

Формат файла похож на /etc/hosts: IP-address пробел Имя_хоста

Это позволяет сэкономить время поиска доменного имени, что в некоторых случаях является узким местом. Кроме того, с помощью этой опции можно имитировать использование переменной окружения HOSTALIASES (которая не является переносимой в другие ОС).

--dns-cache
Разрешить кеширование DNS (по умолчанию: включено).

Обычно Wget2 запоминает IP-адреса, которые он искал в DNS, поэтому ему не нужно повторно обращаться к DNS-серверу за одним и тем же (обычно небольшим) набором хостов, с которых он извлекается. Этот кеш существует только в памяти; новый запуск Wget2 снова свяжется с DNS.

Однако были сообщения о том, что в некоторых ситуациях нежелательно кэшировать имена хостов даже на время короткого запуска приложения, такого как Wget2. С опцией--no-dns-cache Wget2 выполняет новый поиск DNS (точнее, новый вызов «gethostbyname» или «getaddrinfo») каждый раз, когда устанавливает новое соединение. Обратите внимание, что этот параметр не повлияет на кэширование, которое может выполняться разрешающей библиотекой или внешним уровнем кэширования, например NSCD (Linux-службой, обеспечивающий кеширование наиболее распространенных запросов службы имен - прим.перев.).

--retry-connrefused
Считать "connection refused" («соединение отклонено») временной ошибкой и повторять попытки. Обычно Wget2 отказывается от URL-адреса, когда не может подключиться к сайту, потому что отказ от подключения воспринимается как признак того, что сервер вообще не работает и повторные попытки не помогут. Этот вариант предназначен для зеркалирования ненадежных сайтов, серверы которых имеют тенденцию исчезать на короткие промежутки времени.

--user=user, --password=password
Указать имя пользователя и пароль для доступа к файлам по протоколу HTTP. Это переопределяет поиск учетных данных в файле .netrc (опция --netrc включена по умолчанию). Эти два параметра можно отменить с помощью параметров --http-user и --http-password для соединений HTTP(S).

Если не указан ни --http-proxy-user, ни --http-proxy-password, эти настройки также используются для аутентификации прокси.

--ask-password
Вывести приглашение пароле в командной строке. Переопределяет пароль, установленный параметром --password (если указан).

--use-askpass=command
Приглашает к вводу имени и пароля с использованием указанной команды command. Переопределяет пользователя и/или пароль, установленные параметром --user/--password (если указаны).

--no-iri
Отключить поддержку интернационализированных URI (IRI). Используйте --iri для включения. IRI включен по умолчанию.

Вы можете установить состояние поддержки IRI по умолчанию с помощью команды «iri» в .wget2rc. Этот параметр можно переопределить из командной строки.

--local-encoding=encoding
Заставить Wget2 использовать указанную кодировку как системную кодировку. Это влияет на то, как Wget2 преобразует URL-адреса, указанные в качестве аргументов, из локальной кодировки в UTF-8 для поддержки IRI.

Wget2 использует функцию «nl_langinfo ()», а затем переменную среды «CHARSET», чтобы получить локаль. Если это не удается, используется ASCII.

--remote-encoding=encoding
Заставить Wget2 использовать кодировку в качестве кодировки удаленного сервера по умолчанию. Это влияет на то, как Wget2 преобразует найденные в файлах URI из удаленной кодировки в UTF-8 во время рекурсивной выборки. Эти параметры полезны только для поддержки IRI, для интерпретации символов, отличных от ASCII.

Для HTTP, удаленную кодировку можно узнать из поля заголовка HTTP “Content-Type” и из тега HTML “Content-Type http-equiv”.

--input-encoding=encoding
Использовать указанную кодировку для входного файла --input-file со списком URL. По умолчанию используется локальная кодировка.

--unlink
Заставить Wget2 разрывать связь с файлом вместо того, чтобы затирать существующий файл. (Cм. -nc выше для справки по затиранию). Эта опция полезна для загрузки в каталог с жесткими ссылками.

--cut-url-get-vars
Удалять параметры HTTP GET из имен файлов при запросах к серверу. Например, "main.css?v=123” будет заменено на “main.css”. Имейте в виду, что это может иметь непреднамеренные побочные эффекты, например, «image.php?name=sun» будет изменено на «image.php». Обрезка происходит перед добавлением URL-адресов в очередь загрузки.

--cut-file-get-vars
Удалять переменные HTTP GET из имен файлов. Например, “main.css?v=123” будет заменено на “main.css”.

Имейте в виду, что это может иметь непреднамеренные побочные эффекты, например, «image.php?name=sun» будет изменено на «image.php». Обрезка происходит при сохранении файла, после скачивания.

Имена файлов, полученные из заголовка «Content-Disposition», не затрагиваются этим параметром (см. –content-disposition) и могут быть решением этой проблемы.

Когда используется "--trust-server-names", этот параметр влияет на URL-адрес при перенаправлении.

--chunk-size=size
Загружайте большие файлы несколькими многопоточными фрагментами. Этот переключатель указывает размер фрагментов, заданный в байтах, если не указано другое кратное число байтов. По умолчанию установлено 0/выключено.

--max-threads=number
Указывает максимальное количество одновременных потоков загрузки для ресурса. По умолчанию 5, но если вы хотите разрешить больше или меньше, используйте эту опцию.

-s, --verify-sig[=fail|no-fail]
Включает проверку подписи PGP (если нет префикса "no-"). Когда включено, Wget2 попытается загрузить и проверить подписи PGP у соответствующих им файлов. Любой загруженный файл, тип содержимого которого начинается с application/pgp-signature заставит Wget2 запросить подпись для этого файла.

Имя файла подписи вычисляется путем добавления расширения к полному пути к файлу, который только что был загружен.
Используемое расширение определяется опцией "--signature-extensions". Если тип содержимого для запроса подписи — application/pgp-signature, Wget2 попытается сверить подпись с исходным файлом. По умолчанию, если файл подписи не может быть найден (то есть запрос к нему получает код состояния 404), Wget2 завершит работу с кодом ошибки.

Это поведение можно настроить с помощью следующих аргументов:

  • fail: это значение по умолчанию, означающее, что это значение, когда вы указываете флаг без аргумента. Указывает, что отсутствие файлов подписи приведет к завершению работы Wget2 с кодом ошибки.
  • no-fail: Это значение разрешает отсутствующие файлы подписи. Сообщение 404 все равно будет выдано, но программа будет продолжит нормальную работу (при условии отсутствия несвязанных ошибок).

В дополнение к этому, --no-verify-sig полностью отключает проверку подписей. --no-verify-sig не допускает использование аргументов.

--signature-extensions
Указывает расширения файлов для файлов подписи без начального «.». Вы можете перечислить несколько расширений в виде списка, разделенного запятыми. Все предоставленные расширения будут опробованы одновременно при поиске файла подписи. По умолчанию «sig».

--gnupg-homedir
Указывает домашний каталог gnupg для использования при проверке PGP подписей загруженных файлов. По умолчанию используется ваш домашний каталог в операционной системе.

--verify-save-failed
Указывает Wget2 сохранять файлы которые не прошли проверку подписей PGP. По умолчанию файлы не прошедшие проверку PGP удаляются.

--xattr
Сохранять метаданные документов как “user POSIX Extended Attributes” (по умолчанию: включено). Эта возможность работает только если файловая система поддерживает это. Больше информации на https://freedesktop.org/wiki/CommonExtendedAttributes.

В настоящее время Wget2 устанавливает атрибуты

  • user.xdg.origin.url
  • user.xdg.referrer.url
  • user.mime_type
  • user.charset

Чтобы отобразить расширенные атрибуты файла (в Linux): getfattr -d \«file\»

--metalink
Исследовать / обрабатывать файлы метассылок (metalink URLs) без их сохранения (по умолчанию: включено).

Файлы метассылок Metalink описывают загрузки включая зеркала, файлы, контрольные суммы, подписи. Что позволяет загрузки из нескольких частей, автоматический выбор ближайшего зеркала и проверку загруженного файла на целостность.

--fsync-policy
Включает выполнение команды sync после окончания загрузки каждого файла (по умолчанию: отключено).

--http2-request-window=number
Устанавливает максимальное число параллельный потоков на HTTP/2 подключение (по умолчанию: 30).

--keep-extension
This option changes the behavior for creating a unique filename if a file already exists.
Эта опция изменяет поведение при создании уникального имени файла, если файл уже существует.

Стандартный шаблон (по умолчанию) для имен файлов — «filename».«N», новый шаблон — «basename»_«N».«ext».
Идея состоит в том, чтобы использовать такие файлы без переименования, когда открытие с помощью приложений зависит от расширения, как в Windows.

Эта опция не изменяет поведение --backups.

Опции каталогов

-nd, --no-directories
Не создавать иерархию каталогов при рекурсивном извлечении. Если эта опция включена, все файлы будут сохраняться в текущем каталоге без затирания (если имя встречается более одного раза, имена файлов получат расширения .n, где n-целое число).

-x, --force-directories
Противоположность -nd: создавать иерархию каталогов, даже если бы они не были бы созданы иначе.
Например, wget2 -x https://example.com/robots.txt сохранит загруженный файл в папку example.com/robots.txt.

-nH, --no-host-directories
Отключает создание каталогов с именами в виде префиксов хостов. По умолчанию, вызов Wget2 с ключом рекурсии -r https://example.com/ создаст структуру папок, начинающихся с example.com/. Данная опция отключает такое поведение.

--protocol-directories
Использовать имя протокола как часть имени для каталога с локальными файлами. Например, с данной опцией: wget2 -r --protocol-directories https://example.com будет сохранять в https/example.com/... а не просто в example.com/....

--cut-dirs=number
Игнорировать числа в компоненте каталога. Это полезно для получения точного контроля над каталогом, в котором будет сохранен рекурсивный поиск.

Возьмем, к примеру, каталог https://example.com/pub/sub/. Если вы получите его с помощью -r, он будет сохранен локально по адресу example.com/pub/sub/. Хотя параметр -nH может удалить часть example.com/, вы все равно получите pub/sub/.

Здесь пригодится --cut-dirs; из-за этого Wget2 не «видит» ряд компонентов удаленного каталога. Вот несколько примеров того, как работает параметр --cut-dirs.

Без опций -» example.com/pub/sub/
--cut-dirs=1 -» example.com/sub/
--cut-dirs=2 -» example.com/
-nH -» pub/sub/
-nH --cut-dirs=1 -» sub/
-nH --cut-dirs=2 -» .

Если вы просто хотите избавиться от структуры каталогов, эта опция похожа на комбинацию -nd и -P. Однако, в отличие от -nd, --cut-dirs не потеряет подкаталоги. Например, с -nH --cut-dirs=1 подкаталог beta/ будет помещен в sub/beta/, как и следовало ожидать.

-P prefix, --directory-prefix=prefix
Установите префикс каталога на "prefix". Префикс каталога — это каталог, в котором будут сохранены все остальные файлы и подкаталоги, то есть вершина дерева поиска. По умолчанию это ".", текущий каталог. Если префикс каталога не существует, он будет создан.

HTTP и HTTPS опции

См. 2 часть статьи.

Опции рекурсивного извлечения

-r, --recursive
Включить рекурсивное извлечение. Максимальная глубина извлечения по умолчанию равняется 5.

-l depth, --level=depth
Указать максимальную глубину рекурсии в уровнях глубины

--delete-after
Эта опция говорит Wget2 удалять каждый файл который он загружает, после выполнения этого. Это бывает полезно для предварительной загрузки популярных страниц через прокси-серверы, например:

wget2 -r -nd --delete-after https://example.com/~popular/page/

Где опция -r для рекурсивного извлечения, и -nd — не создавать каталоги.

Обратите внимание, что когда указан параметр --delete-after, другой параметр --convert-links игнорируется, так что файлы .orig просто не создаются на первое место.

-k, --convert-links
После завершения загрузки, преобразовать ссылки в документа чтобы сделать их подходящими для локального просмотра. Это затрагивает не только видимые гиперссылки, но любую часть документа, которая связывается к внешнему содержимому, такой как встроенные изображения, ссылки на таблицы стилей, гиперссылки на не-HTML содержимое и т.п..

Каждая ссылка будет изменена одним и двух способов:

  1. Ссылки на файлы, которые были загружены Wget2 будут изменены, чтобы ссылаться на файл, на который она указывает, чтобы стать относительной ссылкой на файл.

Пример: если загруженный файл /foo/doc.html ссылается на /bar/img.gif, также загруженный, тогда ссылка в файле doc.html будет изменена чтобы указывать на ../bar/img.gif. Трансформации такого рода работают надежно для любого сочетания каталогов.

  1. Ссылки на файлы, которые ещё не загружены Wget2 будут изменены чтобы включать в себя имя хоста и абсолютный путь на расположение, на которое они указывают.

Пример: если загруженный файл /foo/doc.html ссылается на /bar/img.gif (или на ../bar/img.gif), тогда ссылка в doc.html
будет изменена чтобы указывать на https://example.com/bar/img.gif.

Благодаря этому локальный просмотр работает надежно: если связанный файл был загружен, ссылка будет ссылаться на его локальное название; если он не был загружен, ссылка будет ссылаться на его полный интернет-адрес, а не на неработающую ссылку. Тот факт, что прежние ссылки преобразуются в относительные, гарантирует, что вы сможете переместить загруженную иерархию папок в другой каталог.

Обратите внимание, что только в конце загрузки вы сможете узнать, какие ссылки были загружены. Из-за этого работа, выполненная с помощью -k, будет выполнена в конце всех загрузок.

--convert-file-only
Этот параметр преобразует только часть URL-адресов, содержащую имя файла, оставляя остальные URL-адреса нетронутыми. Эта часть имени файла иногда упоминается как “базовое имя”, хотя мы избегаем здесь этого термина, чтобы не вызывать путаницы.

Эта опция работает особенно хорошо в сочетании с --adjust-extension, хотя это сопряжение опций не используется принудительно. Наполнение Интернет кешей бывает полезным при загрузке файлов с различных хостов.

Пример: если какая-то ссылка указывает на //foo.com/bar.cgi?xyz , с указанной опцией --adjust-extension его локальное место назначения будет предполагаться ./foo.com/bar.cgi?xyz.css, тогда ссылка будет изменена на //foo.com/bar.cgi?xyz.css. Обратите внимание, что будет изменена только часть ссылки, относящаяся к имени файла. Остальная часть URL останется без изменения, включая сетевой путь (“//”) который в ином случае был бы обработан Wget2 и преобразован к применяющейся схеме (например, “https://”).

-K, --backup-converted
При преобразовании файла, сохранять исходный файл с суффиксом .orig. Влияет на опцию -N (временные отметки).

-m, --mirror
Включает опции подходящие для зеркалирования. Эта опция включает рекурсию и временные метки, устанавливает бесконечную глубину уровней рекурсии.
В настоящее время она равна сочетанию опций -r -N -l inf.

-p, --page-requisites
Эта опция заставляет Wget2 загружать все файлы, которые необходимы для правильного отображения веб-страницы. Такие вещи как встроенные изображения, звуки, и упоминаемые таблицы стилей.

При обычной загрузке одной HTML-страницы любые необходимые документы, которые могут потребоваться для ее правильного отображения, не загружаются.
Использование -r вместе с -l может помочь, но так как Wget2 обычно не делает различия между внешними и встроенными документами, первые в основном остаются как “дочерние документы”, у которых отсутствуют требуемые ресурсы.

Например, предположим документы 1.html содержит тэг «IMG» ссылающийся на 1.gif и тэг «A» указывающий на внешний документ 2.html. Пускай 2.html схож с первым, со ссылкой на изображение 2.gif и ссылкой на документ 3.html. Пусть это продолжается неограниченно долго.

Если мы выполним команду:

wget2 -r -l 2 https://«site»/1.html

тогда будут загружены 1.html, 1.gif, 2.html, 2.gif, и 3.html. Как вы можете видеть, 3.html без требуемого им 3.gif
потому что Wget2 просто подсчитывает число "прыжков" (до 2) от (начального) 1.html чтобы понять, где остановить рекурсию. Однако, с командой:

wget2 -r -l 2 -p https://«site»/1.html

все указанные выше файлы и требуемый 3.html рисунок 3.gif будет загружен.
Похожим образом, команда

wget2 -r -l 1 -p https://«site»/1.html

загрузит 1.html, 1.gif, 2.html, and 2.gif. Кто-то может посчитать, что:

wget2 -r -l 0 -p https://«site»/1.html

загрузит только 1.html и 1.gif, но к сожалению это не тот случай, потому что -l 0 является эквивалентом -l inf, что есть бесконечной рекурсии.
Чтобы загрузить единственную страницу HTML (или, чтобы было удобно, все указанные в командной строке или в -i URL входном файле) и его (или их) требуемые ресурсы, просто уберите -r и -l:

wget2 -p https://«site»/1.html

Замечание: Wget2 будет вести себя как будто был указан ключ -r, но только по отношению к одной странице все необходимые для её отображения ресурсы будут загружены.
Ссылки с этой страницы на другие внешние документы не будут прослежены. Собственно, чтобы загрузить одну веб страницу со всеми необходимыми элементами (даже если они существуют на различных веб-сайтах), и быть уверенным, что веб-страница корректно отобразится с локального диска, этот автор любит использовать -p с некоторым дополнением:

wget2 -E -H -k -K -p https://«site»/«document»

где -E - добавлять расширения к именам файлов
-H - переходить на другие хосты при извлечении
-k - преобразовывать ссылки для локального просмотра
-K - сохранять резервные копии исходных файлов с расширением .orig
-p - извлекать все необходимые для отображения страницы файлы

Чтобы закончить эту тему, стоит знать что Wget2 считает внешней ссылкой любой URL указанный в тегах «A», «AREA», или «LINK» кроме «LINK REL="stylesheet"».

--strict-comments
Устаревшая опция для совместимости с Wget1.x. Wget2 всегда добавляет закрывающий тег комментария, как и популярные браузеры.

--robots
Включить следование стандарту исключения роботов (по умолчанию: включено).

Для каждого посещаемого домена следуйте правилам, указанным в /robots.txt. Вы должны уважать правила владельца домена и отключать его только по очень веским причинам.

Независимо от того, включен он или нет, файл robots.txt загружается и сканируется на наличие карт сайта. Это списки страниц/файлов, доступных для скачивания, которые не обязательно доступны при рекурсивном сканировании.

Это поведение можно отключить с помощью --no-follow-sitemaps.

Рекурсивные опции принятия/отклонения

-A acclist, --accept=acclist
-R rejlist, --reject=rejlist

Указать через запятую списки суффиксов или шаблонов имен файлов, которые следует принять или отклонить. Обратите внимание, что если какой-либо из подстановочных знаков, , ?, [, ] появляется в элементе acclist или rejlist, он будет рассматриваться как шаблон, а не как суффикс.
В этом случае вы должны заключить шаблон в кавычки, чтобы ваша оболочка не расширила его, например, в -A "
.mp3" или -A '*.mp3'.

--accept-regex=urlregex
--reject-regex=urlregex

Указать регулярное выражение для принятия или отклонения имен файлов.

--regex-type=regextype
Укажите тип регулярного выражения. Возможные типы: posix или pcre. Обратите внимание, что для использования типа pcre wget2 должен быть скомпилирован с поддержкой libpcre.

--filter-urls
Применить фильтры принятия и отклонения к URL-адресу перед началом загрузки.

-D domain-list, --domains=domain-list
Установите домены, за которыми нужно следить. domain-list — это список доменов, разделенных запятыми. Обратите внимание, что он не включает -H.

--exclude-domains=domain-list
Указать список доменов, по ссылкам на которые программа не будут следовать.

--follow-sitemaps
Парсинг карты сайта из robots.txt и переход по ссылкам. (по умолчанию: включено).

Эта опция включена для рекурсивных загрузок независимо от того, укажете ли вы --robots или -no-robots. Отслеживание URL-адресов, найденных в картах сайта, можно отключить с помощью --no-follow-sitemaps.

--follow-tags=list
Wget2 имеет внутреннюю таблицу пар тегов/атрибутов HTML, которые он учитывает при поиске связанных документов во время рекурсивного поиска. Однако, если пользователь хочет, чтобы учитывалась только подмножество этих тегов, ему или ей следует указать такие теги в списке, разделенном запятыми, с помощью этой опции.

--ignore-tags=list
Является противоположностью опции --follow-tags. Чтобы пропустить определенные теги HTML при рекурсивном поиске документов для загрузки, укажите их в списке через запятую.

В прошлом этот вариант был лучшим выбором для загрузки одной страницы и ее реквизитов с использованием командной строки, например:

wget2 --ignore-tags=a,area -H -k -K -r https://site/document

Однако автор этой опции наткнулся на страницу с тегами типа "" и пришел к выводу, что указать теги для игнорирования недостаточно. Нельзя просто указать Wget2 игнорировать "", потому что тогда таблицы стилей не будут загружены. Теперь лучшим выбором для загрузки одной страницы и ее реквизитов является специальная опция --page-requisites.

--ignore-case
Игнорировать регистр при сопоставлении файлов и каталогов. Это влияет на поведение опций -R, -A, -I и -X. Например, опция -A "*.txt" воспримет файлы file1.txt, и file2.TXT, file3.TxT, и т.д..

-H, --span-hosts
Разрешает переходы между хостами при выполнении рекурсивного извлечения.

-L, --relative [Не реализовано пока]
Следовать только относительным ссылкам. Полезно при извлечении специфической домашней странице без каких-либо отвлекающих факторов, даже от тех же хостов.

-I list, --include-directories=list
Укажите через запятую список каталогов, которым вы хотите следовать при загрузке. Элементы списка могут содержать подстановочные знаки.

wget2 -r https://webpage.domain --include-directories=*/pub/*/

Пожалуйста, имейте в виду, что /pub// совпадает с //pub// и соответствует каталогам, а не строкам. Это означает, что /pub не влияет на файлы, содержащиеся, например, в /directory/something/pub, но /pub/ соответствует каждому подкаталогу /pub.

-X list, --exclude-directories=list
Укажите через запятую список каталогов, которые вы хотите исключить из загрузки. Элементы списка могут содержать подстановочные знаки.

wget2 -r https://gnu.org --exclude-directories=/software

-I / -X combinations
Укажите в одной команде, разделенный запятой список каталогов, которым должен следовать / не следовать Wget2 при загрузке. Элементы списка могут содержать подстановочные знаки.
Имейте в виду, что Wget2 с этой комбинацией флагов работает немного иначе, чем в wget1.x.
Если параметр -I указан первым, по умолчанию используется «исключить все». Если -X указан первым, по умолчанию используется «включить все».
Несколько опций -I/-X обрабатываются "от начала к концу". Актуально последнее совпадение.

Пример: wget2 -I /pub -X /pub/trash загрузит все из /pub/ кроме /pub/trash.
Пример: wget2 -X /pub -I /pub/important загрузит все, кроме /pub в котором только раздел /pub/important будет загружен.

Чтобы сбросить список (т.е. игнорировать -I/-X из .wget2rc files), используйте --no-include-directories или --no-exclude-directories.

-np, --no-parent
Никогда не подниматься в родительский каталог при загрузке с рекурсией. Это полезная опция, поскольку она гарантирует, что будут загружены только файлы ниже определенной иерархии.

--filter-mime-type=list
Укажите разделенный запятой список типов MIME, которые будут загружены. Элементы списка могут содержать подстановочные знаки. Если тип MIME начинается с символа !', он не будет загружен, это полезно при попытке скачать что-то за исключением. Если на сервере не указывается тип MIME файла, он будет рассматриваться какapplication/octet-stream'. Например, загрузить все, кроме изображений:

wget2 -r https://site/document --filter-mime-type=*,\!image/*

Также полезно загружать файлы, которые совместимы с применяемой вашей операционной системой. Например, чтобы загрузить каждый файл, совместимый с LibreOffice Writer с веб-сайта, используя рекурсивный режим:

wget2 -r https://site/document --filter-mime-type=$(sed -r '/^MimeType=/!d;s/^MimeType=//;s/;/,/g' /usr/share/applications/libreoffice-writer.desktop)

Опции плагинов, коды завершения, отладка Wget2

См. вторую часть статьи.



Verwandte Veröffentlichungen