Download Não Interativo no Linux

LinuxBeginner
Pratique Agora

Introdução

Bem-vindo a este laboratório para iniciantes sobre download não interativo no Linux. A capacidade de baixar arquivos eficientemente a partir da linha de comando é uma habilidade essencial para qualquer usuário Linux ou administrador de sistema.

Neste laboratório, você aprenderá a usar o comando wget, um utilitário poderoso que permite baixar arquivos da internet sem intervenção manual. Esta ferramenta é particularmente útil quando você precisa obter vários arquivos, baixar em segundo plano ou automatizar tarefas de download em scripts.

Ao final deste laboratório, você entenderá como usar o wget para baixar arquivos individuais, renomear downloads e baixar vários arquivos de uma lista - tudo através da linha de comando, sem interfaces gráficas ou prompts interativos.

Configurando o Ambiente e Download Básico

Neste primeiro passo, criaremos um diretório de trabalho e aprenderemos a baixar um único arquivo usando o comando wget.

Criando um Diretório de Trabalho

Vamos começar criando um diretório onde armazenaremos todos os nossos arquivos baixados. Isso ajuda a manter nossos arquivos organizados em um único local.

Navegue até o diretório do projeto e crie um novo diretório chamado download_resources:

cd ~/project
mkdir download_resources

Entendendo o Comando wget

O comando wget é um utilitário para download não interativo de arquivos da web. Sua sintaxe básica é:

wget [opções] [URL]

Seu Primeiro Download

Agora, vamos usar wget para baixar um arquivo. Baixaremos um pacote de distribuição Python como um arquivo de teste:

cd ~/project/download_resources
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

Quando você executar este comando, deverá ver uma saída semelhante a esta:

--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]

Esta saída mostra:

  • A URL que está sendo acessada
  • O endereço IP do servidor
  • A resposta HTTP (200 OK significa sucesso)
  • O tamanho do arquivo (aproximadamente 21MB)
  • O progresso do download
  • A velocidade e o tempo de download
  • Confirmação de que o arquivo foi salvo com seu nome original

Vamos verificar se o arquivo foi baixado corretamente:

ls -lh

Você deve ver o arquivo Python-3.6.1.tgz no diretório com seu tamanho correspondente.

Download com Nomes de Arquivos Personalizados

Nesta etapa, exploraremos como baixar um arquivo e salvá-lo com um nome de arquivo personalizado, em vez de usar o nome padrão da URL.

Usando a Opção -O

A opção -O (letra O maiúscula, não zero) permite que você especifique o nome do arquivo de saída. Isso é útil quando:

  • Você deseja um nome de arquivo mais descritivo
  • O nome de arquivo padrão da URL é muito complexo
  • Você está baixando várias versões do mesmo recurso

Vamos tentar baixar outro pacote Python, mas desta vez vamos salvá-lo com um nome personalizado:

cd ~/project/download_resources
wget -O CustomPython.tgz https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

Neste comando:

  • -O CustomPython.tgz diz ao wget para salvar o arquivo como CustomPython.tgz
  • O arquivo será baixado da URL especificada, mas salvo com nosso nome personalizado

A saída será semelhante à anterior, mas observe que a linha "Saving to" agora mostra nosso nome de arquivo personalizado:

--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]

Vamos verificar se nosso arquivo foi baixado com o nome personalizado:

ls -lh

Você deve agora ver o arquivo Python-3.6.1.tgz original e seu novo arquivo CustomPython.tgz no diretório.

Opções Úteis Adicionais

Enquanto estamos aprendendo sobre as opções do wget, aqui estão mais algumas opções úteis:

  • -q (quiet - silencioso): Suprime a saída, útil para scripts
  • -c (continue - continuar): Retoma um arquivo parcialmente baixado
  • --limit-rate=1m: Limita a velocidade de download (por exemplo, a 1 megabyte por segundo)

Por exemplo, para baixar silenciosamente com um nome personalizado:

wget -q -O PythonQuiet.tgz https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

Este comando não mostrará nenhuma saída, mas o arquivo será baixado. Você pode verificar com:

ls -lh

Você também deve ver o arquivo PythonQuiet.tgz em seu diretório.

Download de Múltiplos Arquivos a Partir de uma Lista

Em cenários do mundo real, você geralmente precisa baixar vários arquivos. Digitar cada comando wget manualmente seria ineficiente. Felizmente, o wget pode baixar vários arquivos de uma lista, o que é perfeito para automação.

Criando um Arquivo com URLs

Primeiro, vamos criar um arquivo de texto contendo as URLs dos arquivos que queremos baixar:

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

Nestes comandos:

  • O primeiro comando echo cria um novo arquivo chamado download_list.txt e adiciona a primeira URL
  • Os comandos echo subsequentes anexam URLs adicionais ao arquivo usando >> (redirecionamento duplo)

Vamos verificar o conteúdo do nosso arquivo para garantir que está correto:

cat download_list.txt

Você deve ver três URLs, cada uma em sua própria linha:

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

Usando wget com um Arquivo de Entrada

Agora podemos usar a opção -i com wget para ler URLs do nosso arquivo e baixar todos os arquivos:

wget -i download_list.txt

Este comando diz ao wget para ler as URLs de download_list.txt e baixar cada arquivo em sequência. Você verá a saída para cada download, semelhante a quando você baixou um único arquivo:

--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
...

Verificando os Arquivos Baixados

Após a conclusão dos downloads, vamos verificar se todos os arquivos foram baixados corretamente:

ls -lh Python-3.7.*

Você deve ver os três arquivos Python 3.7.x que baixamos da lista:

-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

Criando um Script de Download em Lote

Para uso futuro, vamos criar um script de shell simples que pode baixar arquivos de uma lista. Isso demonstra como o wget pode ser usado em automação:

cd ~/project/download_resources
nano batch_download.sh

Insira o seguinte conteúdo no arquivo:

#!/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

Salve o arquivo pressionando Ctrl+O, depois Enter e saia com Ctrl+X.

Torne o script executável:

chmod +x batch_download.sh

Agora você pode usar este script para baixar arquivos de qualquer lista no futuro:

./batch_download.sh download_list.txt

Este comando faria a mesma coisa que nosso comando wget -i download_list.txt anterior, mas está encapsulado em um script que você pode reutilizar.

Resumo

Neste laboratório, você aprendeu a usar o comando wget para download não interativo no Linux. Agora você tem as habilidades para:

  • Baixar arquivos individuais usando comandos wget básicos
  • Salvar arquivos baixados com nomes personalizados usando a opção -O
  • Criar uma lista de URLs e baixar vários arquivos de uma vez usando a opção -i
  • Criar scripts de automação simples para download em lote

Essas habilidades são valiosas para administradores de sistemas, desenvolvedores e qualquer usuário Linux que precise baixar arquivos de forma eficiente da linha de comando. O download não interativo é particularmente útil para automação, gerenciamento de servidores remotos e situações em que interfaces gráficas não estão disponíveis.

Alguns recursos adicionais do wget que você pode explorar por conta própria incluem:

  • Download recursivo com -r para espelhamento de sites
  • Download em segundo plano com -b para downloads de longa duração
  • Usando autenticação com --user e --password para recursos protegidos
  • Definir timeouts, tentativas e outros parâmetros de conexão

Com esses recursos, você pode lidar com uma ampla gama de cenários de download de forma eficiente a partir da linha de comando Linux.