Введение
Добро пожаловать в этот лабораторный практикум для начинающих по неинтерактивной загрузке файлов в Linux. Умение эффективно загружать файлы из командной строки является важным навыком для любого пользователя Linux или системного администратора.
В этом практикуме вы научитесь использовать команду wget, мощный инструмент, который позволяет загружать файлы из интернета без ручного вмешательства. Этот инструмент особенно полезен, когда вам нужно скачать несколько файлов, выполнить загрузку в фоновом режиме или автоматизировать задачи загрузки в скриптах.
К концу этого практикума вы поймете, как использовать wget для загрузки отдельных файлов, переименования загруженных файлов и загрузки нескольких файлов из списка - все это через командную строку без графического интерфейса или интерактивных запросов.
Настройка окружения и базовая загрузка
На этом первом этапе мы создадим рабочую директорию и научимся загружать один файл с использованием команды wget.
Создание рабочей директории
Начнем с создания директории, где мы будем хранить все загруженные файлы. Это поможет организовать наши файлы в одном месте.
Перейдите в директорию проекта и создайте новую директорию с именем download_resources:
cd ~/project
mkdir download_resources
Понимание команды wget
Команда wget представляет собой утилиту для неинтерактивной загрузки файлов из интернета. Базовый синтаксис этой команды выглядит следующим образом:
wget [параметры] [URL]
Ваша первая загрузка
Теперь давайте используем wget для загрузки файла. Мы загрузим дистрибутивный пакет Python в качестве тестового файла:
cd ~/project/download_resources
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
При выполнении этой команды вы должны увидеть вывод, похожий на следующий:
--2024-01-10 10:14:51-- https://www.python.org/ftp/python/3.6.1/Python-3.6.1.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: 22540566 (21M) [application/octet-stream]
Saving to: 'Python-3.6.1.tgz'
Python-3.6.1.tgz 100%[=============================================================>] 21.50M 26.8MB/s in 0.8s
2024-01-10 10:14:52 (26.8 MB/s) - 'Python-3.6.1.tgz' saved [22540566/22540566]
В этом выводе показаны:
- URL, к которому осуществляется доступ
- IP-адрес сервера
- HTTP-ответ (200 OK означает успешное выполнение)
- Размер файла (примерно 21 МБ)
- Прогресс загрузки
- Скорость и время загрузки
- Подтверждение того, что файл был сохранен с оригинальным именем
Давайте убедимся, что файл был загружен правильно:
ls -lh
Вы должны увидеть файл Python-3.6.1.tgz в директории с соответствующим размером.
Загрузка с настраиваемыми именами файлов
На этом этапе мы узнаем, как загружать файл и сохранять его с пользовательским именем вместо использования имени по умолчанию из URL.
Использование опции -O
Опция -O (заглавная буква О, а не ноль) позволяет вам указать имя выходного файла. Это полезно, когда:
- Вы хотите использовать более описательное имя файла.
- Имя файла по умолчанию из URL слишком сложно.
- Вы загружаете несколько версий одного и того же ресурса.
Попробуем загрузить другой пакет Python, но на этот раз сохраним его с пользовательским именем:
cd ~/project/download_resources
wget -O CustomPython.tgz https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
В этой команде:
-O CustomPython.tgzсообщаетwgetсохранить файл какCustomPython.tgz.- Файл будет загружен из указанного URL, но сохранен с нашим пользовательским именем.
Вывод будет похож на предыдущий, но обратите внимание, что строка "Saving to" теперь показывает наше пользовательское имя файла:
--2024-01-10 10:20:51-- https://www.python.org/ftp/python/3.6.2/Python-3.6.2.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: 22676538 (22M) [application/octet-stream]
Saving to: 'CustomPython.tgz'
CustomPython.tgz 100%[=============================================================>] 21.63M 25.9MB/s in 0.8s
2024-01-10 10:20:52 (25.9 MB/s) - 'CustomPython.tgz' saved [22676538/22676538]
Проверим, что наш файл был загружен с пользовательским именем:
ls -lh
Теперь вы должны увидеть как исходный файл Python-3.6.1.tgz, так и новый файл CustomPython.tgz в директории.
Другие полезные опции
Поскольку мы изучаем опции wget, вот еще несколько полезных опций:
-q(quiet): Отключает вывод, полезно для скриптов.-c(continue): Возобновляет загрузку частично загруженного файла.--limit-rate=1m: Ограничивает скорость загрузки (например, до 1 мегабайта в секунду).
Например, чтобы загрузить файл тихо с пользовательским именем:
wget -q -O PythonQuiet.tgz https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
Эта команда не покажет никакого вывода, но файл будет загружен. Вы можете проверить это с помощью:
ls -lh
Теперь вы также должны увидеть файл PythonQuiet.tgz в своей директории.
Загрузка нескольких файлов из списка
В реальных сценариях вам часто нужно загружать несколько файлов. Ввод каждой команды 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, но она обернута в скрипт, который вы можете использовать повторно.
Резюме
В этом практическом занятии вы узнали, как использовать команду wget для неинтерактивной загрузки файлов в Linux. Теперь у вас есть навыки для:
- Загрузки отдельных файлов с использованием базовых команд
wget. - Сохранения загруженных файлов с пользовательскими именами с помощью опции
-O. - Создания списка URL-адресов и загрузки нескольких файлов сразу с использованием опции
-i. - Создания простых скриптов автоматизации для пакетной загрузки.
Эти навыки ценны для системных администраторов, разработчиков и любых пользователей Linux, которые должны эффективно загружать файлы из командной строки. Неинтерактивная загрузка особенно полезна для автоматизации, управления удаленными серверами и в ситуациях, когда графический интерфейс недоступен.
Некоторые дополнительные функции wget, которые вы можете изучить самостоятельно, включают:
- Рекурсивную загрузку с помощью
-rдля создания зеркала веб-сайтов. - Загрузку в фоновом режиме с помощью
-bдля длительных загрузок. - Использование аутентификации с помощью
--userи--passwordдля доступа к защищенным ресурсам. - Установку таймаутов, повторных попыток и других параметров соединения.
С этими возможностями вы можете эффективно обрабатывать широкий спектр сценариев загрузки из командной строки Linux.



