Quão confiável seria baixar mais de 100.000 arquivos via wget de um arquivo Bash sobre SSH?

StackOverflow https://stackoverflow.com/questions/380341

  •  22-08-2019
  •  | 
  •  

Pergunta

Eu tenho um arquivo bash que contém comandos wget para baixar mais de 100.000 arquivos, totalizando cerca de 20 GB de dados.

O arquivo Bash se parece com:

wget http://something.com/path/to/file.data

wget http://something.com/path/to/file2.data

wget http://something.com/path/to/file3.data

wget http://something.com/path/to/file4.data

E existem exatamente 114.770 linhas disso. Quão confiável seria para SSH em um servidor em que tenho uma conta e execute isso? A minha sessão de SSH foi eventualmente? Eu teria que ser ssh'ed o tempo todo? E se meu computador local travar/desligar?

Além disso, alguém sabe quantos recursos isso levaria? Estou louco por querer fazer isso em um servidor compartilhado?

Eu sei que essa é uma pergunta estranha, apenas imaginando se alguém tem alguma idéia. Obrigado!

Foi útil?

Solução

Usar

#nohup ./scriptName &> logname.log

Isso garantirá

  • O processo continuará mesmo se a sessão ssh for interrompida
  • Você pode monitorar, pois está em ação

Também recomendará que você possa ter algum prompt em intervalos regulares, será bom para análise de log. por exemplo #echo "1000 files copied"


No que diz respeito à utilização de recursos, depende inteiramente do sistema e principalmente das características da rede. Teoricamente, você pode calcular o tempo com apenas tamanho de dados e largura de banda. Mas na vida real, atrasos, latências e perdas de dados entram em cena.

Então faça algumas manchas, faça algumas matemáticas e você receberá a resposta :)

Outras dicas

Depende da confiabilidade do meio de comunicação, hardware, ...!

Você pode usar screen Para mantê -lo funcionando enquanto você se desconecta do computador remoto.

Você deseja desconectar o script do seu shell e executá -lo em segundo plano (usando nohup), para que ele continue em execução quando você logo sair.

Você também deseja ter algum tipo de indicador de progresso, como um arquivo de log que registra todos os arquivos que foram baixados e também todas as mensagens de erro. O Nohup envia o Stderr e o stdout para os arquivos. Com esse arquivo, você pode pegar downloads quebrados e execuções abortadas posteriormente.

Faça um teste primeiro com um pequeno conjunto de arquivos para ver se você obteve o comando e gosta da saída.

Eu sugiro que você o separe da sua concha com nohup.

$ nohup myLongRunningScript.sh > script.stdout 2>script.stderr &
$ exit

O script será executado até a conclusão - você não precisa ser conectado o tempo todo.

Verifique se há quaisquer opções que você possa fornecer para fazê -lo novamente na falha.

Se for possível, gere somas de verificação MD5 para todos os arquivos e use -os para verificar se todos foram transferidos corretamente.

Comece com

nohup ./scriptname &

E você deve ficar bem. Além disso, eu recomendaria que você registre o progresso para poder descobrir onde ele parou se o fizesse.

wget url >>logfile.log

pode ser suficiente.

Para monitorar o progresso ao vivo, você pode:

tail -f logfile.log

Pode valer a pena olhar para uma tecnologia alternativa, como rsync. Eu o usei em muitos projetos e funciona muito, muito bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top