Posso confiar no status de saída do wget, mesmo que tenha sido reiniciado?

3

Eu iniciei um trabalho wget com o seguinte comando:

urls=(https://example.com/file1 https://example.com/file2
      https://example.com/file3 https://example.com/file4)
for url in ${urls[@]}; do 
  wget "$url" 2>/dev/null && echo "$url done" >> progress & 
done

Estes eram arquivos de ~ 30-40G cada, então deixei rodar durante a noite. Eu verifiquei novamente hoje e encontrei o seguinte:

-rw-rw-r-- 1 a staff  13M Mar 18 15:11 file1
-rw-rw-r-- 1 a staff  18M Mar 18 15:12 file1.1
-rw-rw-r-- 1 a staff  38G Mar 18 21:10 file1.2
-rw-rw-r-- 1 a staff  12M Mar 18 15:12 file2
-rw-rw-r-- 1 a staff  44G Mar 18 21:35 file2.1
-rw-rw-r-- 1 a staff  446 Mar 18 21:35 progress
-rw-rw-r-- 1 a staff  40G Mar 18 21:24 file3.1
-rw-rw-r-- 1 a staff 4.4M Mar 18 15:12 file3
-rw-rw-r-- 1 a staff 6.5M Mar 18 15:12 file4
-rw-rw-r-- 1 a staff  42G Mar 18 21:27 file4.1

Em outras palavras, vejo alguns arquivos filename.N , que parecem ter o tamanho certo, mas os arquivos filename em si são claramente muito pequenos. O arquivo progress informa que todos os arquivos foram baixados com sucesso:

https://example.com/file1 done 
https://example.com/file2 done 
https://example.com/file3 done 
https://example.com/file4 done 

Pedi à pessoa que disponibilizou para mim que me fornecesse md5sums de cada arquivo, para que eu possa ver se algum dos arquivos filename.N é realmente cópias completas. Enquanto isso, posso supor com segurança que o filename.N com o maior valor de N é, na verdade, uma cópia completa do arquivo em questão?

Eu estou supondo que o processo wget foi reiniciado algumas vezes e é por isso que eu tenho os arquivos .N , mas dado que o && echo parece ter funcionado, isso significa que os arquivos foram, de fato, baixado corretamente ou poderia o && ter sido executado mesmo para um download incompleto?

    
por terdon 20.03.2016 / 17:19

2 respostas

2

Você pode ver os cabeçalhos enviados pelo servidor ( --server-response ) e, se eles incluírem um Content-Length , o wget só sairá quando receber tantos bytes. Isso é mencionado na página do manual para --ignore-length arg. Mas md5 ou outras somas são sempre uma boa ideia!

    
por 20.03.2016 / 18:27
1

Minha interpretação do link

‘--no-clobber’ If a file is downloaded more than once in the same directory, Wget’s behavior depends on a few options, including ‘-nc’. In certain cases, the local file will be clobbered, or overwritten, upon repeated download. In other cases it will be preserved.

When running Wget without ‘-N’, ‘-nc’, ‘-r’, or ‘-p’, downloading the same file in the same directory will result in the original copy of file being preserved and the second copy being named ‘file.1’. If that file is downloaded yet again, the third copy will be named ‘file.2’, and so on.

... é que o wget coloca as versões mais recentes nos arquivos .N e, portanto, pode ser confiável. A única outra preocupação em descartar seria um WGETRC ou outro arquivo wgetrc global.

    
por 20.03.2016 / 17:28

Tags