Список загрузки wget в определенные каталоги

Я хотел бы создать короткий, но приятный скрипт для wget для использования файла .list. Подвох в том, что я хотел бы установить каталоги, в которые эти файлы попадают.

Пример:

file: url.list
[group 1]
http://www.somehost.com/files/tool.7z
http://www.someotherhost.com/files/icon36.png

[group 2]
http://www.idunno.net/other-tool.tar.gz
http://265.265.265.265/config.ini
http://www.myownsite.com/tools/script-to-run-tool.cmd
eof

([группа 1] и [группа 2] просто здесь для удобства чтения, они НЕ в моем файл реального списка) (да, я знаю, что 265 не является реальным, вот почему это пример)

(в настоящее время используется, который не может анализировать папки) wget --continue - timestamping --content-disposition -i url .list

Конечно, в данный момент все 5 файлов загружаются в один каталог. у меня вопрос, есть ли способ сказать wget использовать другую папку для группы 1 и для группы 2, в моем случае я хотел бы, чтобы это захватило несколько инструментов, которые я использую на работе, у меня есть отдельный скрипт в windows это создает USB-ключ winpe и внедряет все инструменты в этих каталогах в ключ.

Итак, мой главный вопрос, можно ли сделать это очень просто, или для этого нужно, чтобы я использовал полный сценарий bash, чтобы захватить их и создать папки, в которые они могли бы войти и переместить их туда? (используя -o в винтах wget с моей меткой времени, а метки времени критически важны)

в теории, когда это закончится, я хотел бы получить свежую копию (псевдонимов):

tools/cool-tool/tool.7z
tools/cool-tool/icon36.png

tools/special-tool/other-tool.tar.gz
tools/special-tool/config.ini
tools/special-tool/script-to-run-tool.cmd
1
задан 20 November 2013 в 05:37

3 ответа

Создайте список, в котором URL и целевой каталог находятся в одной строке:

http://www.somehost.com/files/tool.7z tools/cool-tool/
http://www.someotherhost.com/files/icon36.png tools/cool-tool/
http://www.idunno.net/other-tool.tar.gz tools/special-tool/
http://265.265.265.265/config.ini tools/special-tool/
http://www.myownsite.com/tools/script-to-run-tool.cmd tools/special-tool/

Затем используйте цикл bash, чтобы прочитать файл и передать его в wget:

while read url target; do 
  wget "$url" -P "$target";
done < url.list
0
ответ дан 20 November 2013 в 05:37

Вы должны иметь возможность делать то, что хотите, с помощью опции wget -P или --directory-prefix

   -P prefix
   --directory-prefix=prefix
       Set directory prefix to prefix.  The directory prefix is the
       directory where all other files and subdirectories will be saved
       to, i.e. the top of the retrieval tree.  The default is . (the
       current directory).

. Существует ряд других опций для управления обработкой любых компонентов исходного каталога, которые Это также может быть полезно в зависимости от того, скачиваете ли вы отдельные файлы или используете рекурсивные wget - см. раздел Directory Options на страницах man wget.

0
ответ дан 20 November 2013 в 05:37

Я придумал это:

wgetfiles.sh:

filename="$1"

while read -r line
do
    if [[ "$line" =~ (https?|ftp)\:\/\/ ]]
        then
            wget "$line" -P "$currdir";
        else
            currdir="$line"
            if [ ! -d "$currdir" ]; then
                mkdir "$currdir"
            fi
    fi
done < "$filename"

для текстового файла с любым именем:

file.txt:

Dir 1
http://www.somehost.com/files/tool.7z tools/cool-tool/
https://www.someotherhost.com/files/icon36.png tools/cool-tool/
Dir 2
http://www.idunno.net/other-tool.tar.gz tools/special-tool/
https://265.265.265.265/config.ini tools/special-tool/
Dir 3
ftp://www.myownsite.com/tools/script-to-run-tool.cmd tools/special-tool/

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

1121 Просто небольшое дополнение. Эта строка будет охватывать многие ситуации:

wget "$line" -e robots=off -r -l 1 -nd -nc --wait 1 −−random−wait -R html,"index.*"  -P "$currdir"

Она будет игнорировать robots.txt (-e robots=off), возвращаться в каталог, если ссылка на каталог (-r -l 1), не будет загружать иерархия каталогов с сайта - только файлы (-nd), не будут загружать уже загруженные файлы (-nc), будут случайным образом ждать загрузки следующего файла, чтобы дополнительно помочь застраховаться от отклонения с сайта (--wait 1 −−random−wait) и не будет загружать html файлы или файлы вида index.* (-R html,"index.*").

Кроме того, чтобы создать иерархию каталогов, как Dir 1/subdir 1/sub-subdir 1:

mkdir -p "$currdir"
0
ответ дан 20 November 2013 в 05:37

Другие вопросы по тегам:

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