Как я могу ограничить загруженный размер файла в wget?

Расширение фигурной скобки происходит очень удобное при создании больших структур каталогов:

mkdir -p dir1/{subdir1,subdir2}/{subsubdir1,subsubdir2}

Это даст Вам

find dir1 -type d
dir1
dir1/subdir1
dir1/subdir1/subsubdir1
dir1/subdir1/subsubdir2
dir1/subdir2
dir1/subdir2/subsubdir1
dir1/subdir2/subsubdir2

Вы могли даже пойти один шаг вперед и поместить расширение фигурной скобки в расширение фигурной скобки:

mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}

Это даст Вам ту же структуру каталогов как пример выше.

13
01.09.2014, 21:12
5 ответов

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

- макс. размер файла
Укажите максимальный размер (в байтах) файла для загрузки. Если файл, который требуют, будет больше, чем это значение, то передача не запустится, и завихрение возвратится с кодом выхода 63.
Примечание: Размер файла не всегда известен до загрузки, и для таких файлов эта опция не имеет никакого эффекта, даже если передача файлов заканчивает тем, что была больше, чем этот данный предел.

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

14
27.01.2020, 19:53
  • 1
    Можно объединить это с системным пределом для запрещения завихрения создание файла, больше, чем $n байты: (ulimit -f $(($n/512)); curl --max-filesize $n …). curl прервется с ошибкой, если размер файла перейдет $n/512 512-байтовые блоки. –  Gilles 'SO- stop being evil' 11.07.2011, 00:22
  • 2
    Вы можете также Вы httrack. –  Vi. 30.12.2013, 03:46

Если Вы хотите использовать wget, вот способ протестировать размер файла без загрузки:

wget --spider $URL 2>&1 | awk '/Length/ {print $2}'

где $URL URL файла, который Вы хотите загрузить, конечно.

Таким образом, можно обусловить сценарий на основе вывода. такой как:

{ [ $(wget --spider $URL 2>&1 | awk '/Length/ {print $2}') -lt 20971520 ] && wget $URL; } || echo file to big

для ограничения размера загрузки к 20 МБ.

(код ужасен только для информационных целей).

6
27.01.2020, 19:53

Кажется, нет никакого разумного способа установить макс. размер файла с wget.

1
27.01.2020, 19:53
  • 1
    с ulimit (см. bash(1), setrlimit(2)) будет также работать с wget(1), хотя это немного властно. –  sarnold 11.07.2011, 03:01

wget имеет опцию -Q--quota, которая ограничивает максимальный объем загрузки, когда задано несколько рекурсивных URL-адресов (или списка ввода ).

https://www.gnu.org/software/wget/manual/html_node/Download-Options.html

https://stackoverflow.com/a/20318140/4364036

1
27.01.2020, 19:53

Да, есть разумный способ установить максимальный размер файла с помощью wget, вопрос достаточен. Итак, по этой ссылке есть отличный патч для wget и уже скомпилированный wget. Я использовал его по разумной причине, которая у меня была, и это сработало так хорошо. Я бы хотел, чтобы они добавили это в wget в репозиторий Linux.

https://yurichev.com/wget.html

Удачи.

3
20.06.2020, 00:50

Теги

Похожие вопросы