Ir para o conteúdo
HexaTransfer
Voltar ao blog
Transferencia de arquivos

Retomar transferências interrompidas: nunca recomeçar do zero

Aprenda como as transferências retomáveis funcionam e porque são essenciais. Nunca mais perca progresso em uploads grandes com serviços que suportam retoma.

As transferências retomáveis dividem um ficheiro em partes e registam quais foram recebidas com sucesso; quando a ligação cai, o cliente retoma a partir da próxima parte por enviar em vez de recomeçar do byte zero. O padrão web para isto é o tus.io (protocolo aberto de upload retomável), implementado pelo SwissTransfer, HexaTransfer, Vimeo, Cloudinary e muitos serviços modernos de transferência. Para transferências, os pedidos HTTP Range (RFC 7233) permitem que browsers e ferramentas como curl ou aria2 retomem transferências interrompidas. Sem retomada, um upload de 9,8 GB que falha a 9,5 GB significa recomeçar tudo — com retomada, perde-se no máximo 50 MB.

O problema dos uploads não retomáveis

Um upload simples envia o ficheiro inteiro numa única requisição HTTP POST. Se algo interrompe a ligação — queda de Wi-Fi, timeout da VPN, suspensão do portátil, falha do operador de internet — a ligação TCP fecha e o servidor descarta os dados parciais recebidos. O cliente recomeça do byte zero.

Para um upload de 5 GB a 50 Mbps, são 13 minutos de trabalho desperdiçados. Para 50 GB, mais de duas horas. A taxa de falha de uploads não retomáveis em ligações móveis é brutal — um upload de 30 minutos numa ligação 4G raramente consegue concluir à primeira tentativa.

Como funcionam os protocolos retomáveis

Os uploads retomáveis modernos funcionam de forma aproximadamente assim:

  1. Criar: O cliente envia um POST ao servidor com o tamanho total e metadados do ficheiro. O servidor devolve um URL único para este upload específico e reserva espaço de armazenamento.
  2. Dividir: O cliente divide o ficheiro em partes (tipicamente entre 5 MB e 64 MB cada).
  3. Enviar: O cliente envia cada parte como um pedido PATCH com um cabeçalho Content-Range ou Upload-Offset a indicar a posição da parte.
  4. Confirmar: O servidor grava a parte no armazenamento e confirma o novo offset.
  5. Retomar: Se a ligação cair, o cliente envia um pedido HEAD ao URL do upload. O servidor responde com o offset atual (quantos bytes tem). O cliente retoma a partir desse offset.
  6. Concluir: Quando a última parte é confirmada, o upload está completo.

Este modelo está definido pela especificação tus.io (versão 1.0.0 em uso generalizado). Outras variantes incluem o S3 Multipart Upload (para uploads diretos ao S3) e os Uploads Retomáveis do Google Cloud Storage.

Tus.io: o padrão aberto

O Tus ("transloadit upload server") é um protocolo livre e aberto mantido pela Transloadit. A especificação está em tus.io e é implementada por:

  • Bibliotecas cliente: tus-js-client (browser + Node.js), TUSKit (iOS), tus-android-client, tus-java-client
  • Implementações servidor: tusd (servidor de referência em Go), tus-node-server e muitas integrações de frameworks
  • Serviços comerciais: SwissTransfer, HexaTransfer, Vimeo, Cloudinary, Transloadit, servidores companion do Uppy

O protocolo é deliberadamente minimalista: quatro verbos HTTP (POST, HEAD, PATCH, OPTIONS) e um conjunto de cabeçalhos (Upload-Offset, Upload-Length, Tus-Resumable). Isto mantém as implementações simples e interoperáveis.

Decisões sobre o tamanho das partes

O tamanho das partes equilibra a granularidade de retoma com o overhead HTTP.

| Tamanho da parte | Custo de recuperação em caso de falha | Overhead | |---|---|---| | 1 MB | Perda ≤ 1 MB | Elevado (muitos pedidos) | | 5 MB | Perda ≤ 5 MB | Moderado | | 16 MB | Perda ≤ 16 MB | Baixo | | 64 MB | Perda ≤ 64 MB | Mínimo | | 256 MB | Perda ≤ 256 MB | Overhead negligível, doloroso em caso de falha |

Em ligações estáveis, partes de 32-64 MB maximizam o débito. Em redes móveis ou Wi-Fi instável, partes de 2-5 MB recuperam mais rapidamente de cada falha. Os serviços geralmente escolhem um valor padrão entre 5-10 MB como compromisso.

O que realmente interrompe as transferências

Compreender os modos de falha ajuda a avaliar se a implementação de retoma de um serviço é robusta:

  • Quedas de Wi-Fi: mudança de rede, perda de sinal, reinício do router. Muito comum.
  • Suspensão do portátil: fechar o ecrã no macOS/Windows. O sistema operativo suspende a rede; ao acordar, as ligações frequentemente precisam ser restabelecidas.
  • Suspensão de separadores: os browsers modernos suspendem separadores em segundo plano para poupar memória. Uploads num separador suspenso podem parar.
  • Problemas do operador/backhaul: mudanças momentâneas de encaminhamento, novo handshake TLS necessário.
  • Reconexão da VPN: os clientes VPN renegociam periodicamente; a ligação TCP morre.
  • Reinícios do servidor: o serviço de transferência implementa uma nova versão; pedidos em curso falham.
  • Alterações de política de origem cruzada: firewalls corporativos que inspecionam tráfego por vezes terminam ligações de longa duração.

Uma implementação retomável robusta trata todos estes casos com o mesmo mecanismo: reconectar, HEAD para verificar o offset, retomar a partir daí.

Retoma em transferências

Os pedidos HTTP Range (RFC 7233) suportam transferências retomáveis. Um servidor que anuncia Accept-Ranges: bytes nos cabeçalhos de resposta suporta pedidos de intervalo. Os clientes podem então enviar Range: bytes=1000000- para obter apenas os bytes a partir do offset 1.000.000.

Os browsers usam isto automaticamente quando se clica em "Retomar" no gestor de transferências. Chrome, Firefox e Safari suportam retoma de transferências a partir de servidores compatíveis. A maioria das CDN (Cloudflare, Fastly, CloudFront) suporta intervalos.

As ferramentas de linha de comando expõem mais controlo:

  • curl -C - -O url retoma uma transferência de onde parou.
  • wget -c url faz o mesmo.
  • aria2c -c -s 16 url transfere com 16 fluxos paralelos de pedidos de intervalo para maior velocidade.

Serviços que suportam retoma

Os serviços de transferência modernos tratam maioritariamente da retoma de uploads:

| Serviço | Retoma de upload | Retoma de transferência | |---|---|---| | SwissTransfer | Sim (baseado em tus) | Sim (intervalos HTTP) | | HexaTransfer | Sim (partes + compatível com tus) | Sim | | WeTransfer | Sim (uploads em partes) | Sim | | Dropbox Transfer | Sim | Sim | | Google Drive | Sim (API de upload retomável) | Sim | | OneDrive | Sim | Sim | | Box | Sim | Sim |

Os planos gratuitos por vezes desativam a retoma para incentivar actualizações pagas, mas isto é raro em 2026. Os serviços mais antigos sem suporte de retoma estão a desaparecer das listas de recomendações porque os utilizadores se cansam das falhas.

O que não retoma automaticamente

Os uploads HTTP POST simples em aplicações rudimentares não retomam. As transferências FTP variam historicamente — alguns clientes e servidores suportam comandos REST (reinício), outros não. Os anexos de correio electrónico não podem ser retomados — se um envio do Gmail falhar a 90%, é recomeçar do início.

As transferências por torrent retomam inerentemente porque o protocolo torrent controla quais partes foram verificadas. Esta é parte da razão pela qual o BitTorrent continuou útil para distribuições muito grandes, mesmo quando a web avançou noutras métricas.

Retoma com encriptação ponta a ponta

Os uploads retomáveis combinados com encriptação no lado do cliente requerem divisão em partes cuidadosa. O ficheiro é dividido em partes, cada parte é encriptada com AES-256-GCM usando um IV (vetor de inicialização) único, e depois enviada. Na retoma, o cliente deve saber quais partes foram concluídas e continuar a partir da seguinte.

Como cada parte é encriptada e autenticada de forma independente (modo AEAD do GCM), os uploads parciais não podem ser adulterados. Um servidor malicioso que insira dados inválidos no offset 5 GB falharia na autenticação quando o destinatário desencriptar — a discordância da tag GCM seria detetada.

Implementações como o HexaTransfer usam IVs por parte derivados deterministicamente de uma chave mestra e do índice da parte, pelo que a retoma não requer armazenar IVs separadamente. O lado da desencriptação reconstrói-os a partir da mesma derivação.

Boas práticas do lado do cliente

Para maximizar o sucesso da retoma:

  • Manter o separador activo durante o upload. A suspensão de separadores do browser termina uploads em curso. Um aviso "não feche este separador" é padrão nas interfaces dos serviços de transferência.
  • Ligar à rede por cabo quando possível. As quedas de Wi-Fi causam a maioria das falhas.
  • Desativar a suspensão por poupança de energia durante uploads longos. macOS: caffeinate -i. Windows: utilitário Awake do Powertoys ou alterações no plano de energia.
  • Não mudar de rede Wi-Fi a meio de um upload. A ligação TCP muda de IP e morre.
  • Deixar o upload terminar antes de fechar o portátil. O macOS moderno por vezes preserva uploads através de breves suspensões, mas não é fiável.

Verificar no lado do servidor

Alguns serviços mostram barras de progresso que não refletem efetivamente o estado do servidor. Após um upload que sobreviveu a uma ou duas interrupções, atualize a página e verifique se a ligação funciona — abra-a em modo de navegação privada e transfira uma pequena parte. Se a retoma funcionou, o ficheiro completo será transferido corretamente.

Para cenários que exigem máxima certeza, calcule um hash SHA-256 no cliente, faça o upload e verifique se o hash do ficheiro transferido corresponde. Uma verificação de integridade criptográfica demora 10 segundos de CPU por gigabyte e garante certeza absoluta.

Conclusão

A transferência retomável é uma funcionalidade essencial em 2026 — qualquer serviço sem ela é um motivo imediato para exclusão em ficheiros com mais de algumas centenas de megabytes. Procure conformidade com tus.io ou comportamento equivalente de upload em partes. Certifique-se de que o serviço escolhido trata interrupções graciosamente; teste com uma queda de rede deliberada num ficheiro pequeno antes de comprometer-se com uma transferência grande.

Experimente em hexatransfer.com — gratuito, sem conta, até 10 GB.

Envie arquivos grandes com segurança e criptografia de ponta a ponta

Transfira arquivos de até 10 GB gratuitamente com criptografia de ponta a ponta. Sem necessidade de conta. Seus arquivos são criptografados no navegador antes do envio — ninguém mais pode lê-los.

Enviar um arquivo