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