Speeding up large downloads: resumable transfers and multi-line scheduling

Interrupted downloads should not start over: pair resume flags with retries and finish the job.

2026-09-24 · Tips

Why large files get interrupted

Installers can be hundreds of megabytes or several gigabytes; when a cross-border link fluctuates, the TCP connection drops and the default behavior is often to start from zero. The gateway passes the Range request header through end-to-end, so resuming is up to the client flags: with the right options, the client continues from the interrupted byte offset instead of re-downloading what is already on disk.

Resume settings for three common tools

  • wget -c: the classic resume switch; combine with -t 3 for automatic retries
  • curl -C - -fL -O: -C - resumes into the original file, -f avoids writing garbage on HTTP errors
  • aria2c -c -x16 -s16: multi-connection segmented download to saturate bandwidth for a single file
wget -c -t 3 --timeout=30 -O app.zip "https://ghclone.com/https://github.com/owner/repo/releases/download/v1.0/app.zip"
curl -C - -fL --retry 3 -o app.zip "https://ghclone.com/https://github.com/owner/repo/releases/download/v1.0/app.zip"
aria2c -c -x16 -s16 -k 1M "https://ghclone.com/https://github.com/owner/repo/releases/download/v1.0/app.zip"

Notes on aria2 segmented downloads

-x16 -s16 means up to 16 connections per server and 16 segments in parallel. It speeds up large files considerably, but more connections is not always better: under link jitter, individual segments are more likely to stall. Keep defaults or lower the numbers, and let -c handle the resume finish.

Multi-line scheduling and retries

When converting links in the browser, the page probes latency across all available lines concurrently and picks the fastest one. If a line fails, the server retries and trips a circuit breaker to fall back. On the command line, let the client handle retries (--retry / -t); after an interruption, simply run the same command again to resume.

FAQ

  • “Server does not support resume”? Make sure -L is present to follow redirects, and check that the partial file exists locally (resume relies on it).
  • Speed varies wildly? Link fluctuation is normal; test another line or avoid peak hours.
  • Corrupted file after resume? Rarely, the remote content changed mid-way. Pin to a tag or commit instead of a branch name.

← Back to blog