Baixe arquivos muito grandes com HTTP

Baixe arquivos muito grandes com HTTP

estou baixando oPlaceNetbanco de dados compactado de imagens de lugares (~132GiB). Infelizmente, o arquivo baixado está corrompido. Eu tentei várias vezes, cada vez que a extração é interrompida em posições diferentes (aproximadamente os deslocamentos podem ser 10GiB, 30GiB, etc.)PlaceNetnão fornece versões divididas para download. Bem, o problema deve ser alguns bytes no arquivo baixado. O que posso fazer para evitar baixar novamente o arquivo inteiro?

Minhas ideias são:

  1. Existe extensão TCP para uma soma de verificação de datagrama aprimorada? E como usá-lo?

  2. Posso ver o deslocamento (aprox.) do primeiro byte de erro quandopistolapingar?

  3. estou a usareixobaixar. Quando o download for concluído, é possível baixar novamente algumas partes do arquivo? Ou seja, crie o XXX.starquivo para axel, marque algum intervalo como não baixado e execute o axel novamente.

Responder1

Você pode tentar uma abordagem diferente, ou seja, usar um wrapper FUSE para "montar" um arquivo remoto via HTTP e invocar ferramentas padrão nele. As ferramentas tentarão ler bytes específicos e essas tentativas serão traduzidas em solicitações GET de intervalo de bytes HTTP.

Isso foi discutido no StackOverflow, emesta ótima respostaporAdãoque usaHTTPFS:

Monte um arquivo zip remoto e extraia um arquivo dele:

mkdir mount_pt
sudo ./httpfs http://server.com/zipfile.zip mount_pt
sudo ls mount_pt zipfile.zip
sudo unzip -p mount_pt/zipfile.zip the_file_I_want.txt > the_file_I_want.txt
sudo umount mount_pt

No seu caso, se o arquivo não for um ZIP, mas, por exemplo, um tar.gzarquivo (não posso verificar porque o link que você forneceu requer registro), você poderá adaptar as etapas:

mkdir mount_pt
sudo ./httpfs http://example.com/file.tar.gz mount_pt
sudo tar xzvf mount_pt/file.tar.gz

Ou até mesmo ligue file-rollerpara outra ferramenta GUI no arquivo.

informação relacionada