Como fazer upload de um arquivo grande usando a linha de comando aws quando a conexão pode não ser confiável?

2

Estou com problemas para enviar um arquivo grande (800MB) para s3, usando a ferramenta de linha de comando aws . A primeira tentativa foi completada (depois de muitas horas), mas não era visível, e eu fui avisado (aqui) que foi comido pelos goblins e preciso começar de novo.

Eu fiz um teste com um arquivo de 16MB e ele fez um upload em 3 partes e foi concluído sem problemas. Eu posso ver lá com aws s3 ls s3://mybucket .

Então tentei com aws s3 cp bigfile.tgz s3://mybucket . Mas 26 minutos depois, percebi que tenho três falhas de upload, cada uma parecendo assim:

upload failed: ./bigfile.tgz to s3://mybucket/bigfile.tgz
HTTPSConnectionPool(host='s3-eu-west-1.amazonaws.com', port=443): Max retries exceeded with url: /mybucket/bigfile.tgz?partNumber=8&uploadId=m_jMF.[elided]UPz (Caused by <class 'ConnectionResetError'>: [Errno 104] Connection reset by peer)

Na verdade, a terceira mensagem diz: "Causado por: [Errno 32] Canal quebrado)", em vez de "Causado por: [Errno 104] Conexão redefinida pelo par".

Neste momento, ainda está em execução e diz:

Completed 16 of 120 part(s) with -2 file(s) remaining

Isso aconteceu antes, e eu simplesmente ignorei, supondo que se fosse um erro fatal, ele teria parado. Agora eu me pergunto se vai gastar mais 3hrs e me dar um arquivo invisível novamente, porque algumas partes falharam no upload?

Se esse for o caso, minha pergunta é: como faço upload de um arquivo grande para s3 em uma conexão de internet que algumas vezes tem esses problemas? Existe uma maneira de dizer para não desistir tão facilmente?

ATUALIZAÇÃO: eu tentei com o wifi gratuito em um local diferente, e o arquivo foi concluído rapidamente, sem nenhuma dessas mensagens de falha. Então, nada de errado com o arquivo, ou minha configuração s3. Ainda esperando encontrar alguma opção de configuração para que eu possa dizer para continuar a tentar cada parte para sempre.

    
por Darren Cook 19.11.2015 / 13:00

1 resposta

2

Você pode usar o cliente Minio aka mc , é de código aberto e compatível com o AWS S3.

O cliente Minio tem o comando resume session , que fará o upload do objeto onde foi deixado na última desconexão.

Eu criei um vídeo do Youtube mostrando o mesmo

Espero que ajude. Isenção de responsabilidade: Eu trabalho para Minio

    
por 08.03.2016 / 15:55