Загрузка нескольких файлов из списка
В реальных сценариях вам часто нужно загружать несколько файлов. Ввод каждой команды wget вручную было бы неэффективно. К счастью, wget может загружать несколько файлов из списка, что идеально подходит для автоматизации.
Создание файла со списком URL
Сначала создадим текстовый файл, содержащий URL-адреса файлов, которые мы хотим загрузить:
cd ~/project/download_resources
echo "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz" > download_list.txt
echo "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz" >> download_list.txt
echo "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz" >> download_list.txt
В этих командах:
- Первая команда
echo создает новый файл с именем download_list.txt и добавляет первый URL.
- Последующие команды
echo добавляют дополнительные URL в файл с использованием >> (двойной перенаправитель).
Проверим содержимое нашего файла, чтобы убедиться, что все правильно:
cat download_list.txt
Вы должны увидеть три URL, каждый на отдельной строке:
https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
Использование wget с входным файлом
Теперь мы можем использовать опцию -i с wget для чтения URL из нашего файла и загрузки всех файлов:
wget -i download_list.txt
Эта команда сообщает wget прочитать URL из download_list.txt и загрузить каждый файл последовательно. Вы увидите вывод для каждой загрузки, аналогичный тому, когда вы загружали один файл:
--2024-01-10 10:30:51-- https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
Resolving www.python.org (www.python.org)... 151.101.76.223, 2a04:4e42:12::223
Connecting to www.python.org (www.python.org)|151.101.76.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22808518 (22M) [application/octet-stream]
Saving to: 'Python-3.7.0.tgz'
Python-3.7.0.tgz 100%[=============================================================>] 21.75M 25.9MB/s in 0.8s
2024-01-10 10:30:52 (25.9 MB/s) - 'Python-3.7.0.tgz' saved [22808518/22808518]
--2024-01-10 10:30:52-- https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
...
Проверка загруженных файлов
После завершения загрузки убедимся, что все файлы были загружены правильно:
ls -lh Python-3.7.*
Вы должны увидеть три файла Python 3.7.x, которые мы загрузили из списка:
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.0.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.1.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:31 Python-3.7.2.tgz
Создание скрипта пакетной загрузки
Для будущего использования создадим простой скрипт на шелле, который может загружать файлы из списка. Это демонстрирует, как wget можно использовать в автоматизации:
cd ~/project/download_resources
nano batch_download.sh
Введите следующее содержимое в файл:
#!/bin/bash
## A simple script to download files from a list
if [ -f "$1" ]; then
echo "Downloading files from list: $1"
wget -i "$1"
else
echo "Error: File $1 not found"
exit 1
fi
Сохраните файл, нажав Ctrl+O, затем Enter, и выйдите, нажав Ctrl+X.
Сделайте скрипт исполняемым:
chmod +x batch_download.sh
Теперь вы можете использовать этот скрипт для загрузки файлов из любого списка в будущем:
./batch_download.sh download_list.txt
Эта команда сделает то же самое, что и наша предыдущая команда wget -i download_list.txt, но она обернута в скрипт, который вы можете использовать повторно.