Pular para o conteúdo

Agendar downloads pelo terminal do Linux

Dica publicada em Linux / Internet
Osiel mrtuxys
Hits: 9.446 Categoria: Linux Subcategoria: Internet
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Agendar downloads pelo terminal do Linux

Ferramentas necessárias: cron e wget

Quem conhece as ferramentas cron e wget, provavelmente já pensou ou fez isso que eu vou mostrar. Mas quem não conhece fica aí uma forma de conhecê-los, brevemente.

Recentemente eu precisei fazer 24 downloads de episódios de uma série. Das formas que eu encontrei a mais viável era baixar de um por um no megaupload. Cada episódio com 350MB, apesar de a net ser boa, seria uma tarefa no mínimo trabalhosa.

Pensei: vou pegar todos os links e adicionar no crontab com o wget.

Primeiro breve explicação sobre o que é crontab.

crontab

Existe um arquivo /etc/crontab que serve para agendar tarefas de administração do sistema, para todo o sistema ou apenas um usuário normal. Entretanto, no nosso caso, não se faz obrigatório editar esse arquivo. Por isso, não vou entrar em muito detalhes, já que esse não é objetivo dessa dica.

Saiba que a edição abaixo mostrada também serve para este arquivo. Mesmo assim eu acredito que você deva estudá-lo.

wget

O comando wget trabalha em segundo plano e pode ser usado para configurar e executar um download sem que o usuário tenha que permanecer conectado. Isso é, você pode começar um download, interromper e continuar mais tarde. Para isso use a opção "c", sem aspas.

Chega de enrolação e vamos ao que interessa.

No terminal, como usuário normal mesmo, digite:

crontab -e

Na primeira vez que você digitar isso vai aparecer um menu para que seja escolhido seu editor de texto preferido. Eu particularmente prefiro o vim, então vou de vim mesmo.

Depois de escolhido você vai ver uma linha assim:

# m h dom mon dow command

Onde:
  • m = minutos (0 - 59)
  • h = horas (0 - 23)
  • dom = dia do mês (1 - 31)
  • mon = mês (1 - 12)
  • dow = dia da semana (0 - 6, sendo 0 igual a sábado, 1 igual a domingo, 6 igual a sexta)
  • command = comando

Pronto, explicado isso vamos editar.

No comando, digite suas opções de horário.

# minuto...hora..."dia mês"...mês..."dia semana"... comando
36 3 31 1 2 wget -c http://www617.megaupload.com/files/6d686852898c309bf6b7eae2917d32a6/LOST.s02E08.dual.audio%5Bwww.Bestuniom.Net%5D%20By%20Tyrdall.avi
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Aqui temos a seguinte situação:

No minuto 36, às 3 horas da manhã do dia 31 do mês de janeiro, uma segunda feira, eu quero que o "wget -c" baixe o arquivo do endereço http://www617.megaupload.com/files/6d686852898c309bf6b7eae2917d32a6/LOST.s02E08.dual.audio%5Bwww.Bestuniom.Net%5D%20By%20Tyrdall.avi.

Um problema que você pode ver, nessa dica não tem nada que armazene o momento do fim do download, o que poderia ser usado como uma variável, ou algo assim. Já que sabemos que esses servidores, quando não se tem conta, o limite fica restrito a um download por vez.

Fica a pergunta: Quando começar o outro?

Eu também gostaria de uma forma. Mas como não tenho eu fiz o seguinte: editei para começar o novo download com o dobro do tempo que está marcando para o seu fim. Entendeu? Isso mesmo, comecei um download e na janelinha do Firefox aparece que o download vai terminar em 30 minutos, coloquei no comando para começar com um hora depois do outro. Não é forma mais correta, mas no momento é a mais viável.

Sendo assim edite a próxima linha com o tempo que você acha que vai ser suficiente e coloque quantas linha achar que pode.

Obs.: Usei aqui links do megaupload. Aquele link que já está pronto, depois da contagem dos 45 segundos.

Dica previamente publicada em meu blog: http://osieltux.blogspot.com

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Corrigir erro em imagem .iso pelo torrent

Problemas de mtu/mss - Compartilhamento de velox com cabo cross

Conectando o SB4200 pela porta USB

Criar conexão banda larga no Librix

ActionCube - Um jogo leve e atraente

Instalar Google Chrome no Slackware 15

#2 Comentário enviado por removido em 21/02/2011 - 14:34h
Boa dica. Valeu também fábio !

Abraços.
#3 Comentário enviado por evaldoavelar em 21/02/2011 - 15:39h
Dá também para combinar a sua dica com FreeRapid [1] usando o crontab para acordar o aplicativo.

Ele faz exatamente o que você esta querendo, baixar partes de sites de downloads como megaupload, rapidshare entre ourtos.

Ele gerencia, espera o tempo certo entre os dwonloads. Inclusive ele consegue pausar os downloads apara continuar depois.



[1]http://wordrider.net/freerapid/download.html
#4 Comentário enviado por mrtuxys em 21/02/2011 - 19:01h
Muito obrigado Fábio, pelo seu complemento.

Obrigado a todos pelos comentários.
#5 Comentário enviado por mcnd2 em 21/02/2011 - 19:05h
Gostei.

Nunca usei o 'crontab' e pouquíssima vez o 'wget'.

Fica ai uma dica interessante para quando vicio em baixar músicas.
#6 Comentário enviado por mikemldo em 06/03/2011 - 08:34h
Outra forma é utilizar o comando sequencialmente com && no final. Ex.: "wget URL1 && wget URL2 && wget URL3"
Assim, somente após o término de um, o outro vai iniciar.

E, se quiser desligar o computador depois dos downloads, o último comando seria "&& shutdown now"

Abraços.
#7 Comentário enviado por mrtuxys em 08/03/2011 - 23:21h
Obrigado por sua contribuição mikemldo.

Contribuir com comentário

Entre na sua conta para comentar.