Resuming a partial download prevents a dropped session from wasting already transferred bytes. That matters most for large artifacts, unstable links, and unattended jobs where starting over can add minutes or hours to a recovery step.
GNU wget resumes with -c or --continue by reusing the existing local file and requesting the remaining bytes from the server. When the remote endpoint supports byte ranges, the next request returns HTTP 206 Partial Content and appends only the missing portion.
Server support is the key requirement. If the remote side ignores range requests, current wget builds restart the download from the beginning and overwrite the existing partial file, so confirm Accept-Ranges support before you rely on resume behavior for important artifacts.
Steps to resume interrupted downloads using wget:
- Change to the directory that already contains the partial file and confirm its current size.
$ cd ~/downloads/resume $ ls -lh sample-256k.bin -rw-r--r-- 1 user user 64K Mar 27 06:57 sample-256k.bin
Resume works against the existing filename in the current directory, so do not rename the partial file before rerunning the command.
- Resume the download with -c and watch for a partial-content response.
$ wget -c https://downloads.example.net/files/sample-256k.bin --2026-03-27 06:57:54-- https://downloads.example.net/files/sample-256k.bin Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected. HTTP request sent, awaiting response... 206 Partial Content Length: 262144 (256K), 196608 (192K) remaining [application/octet-stream] Saving to: 'sample-256k.bin' [ skipping 50K ] 50K ,,,,,,,,,, ,,,,...... .......... .......... .......... 39% 561M 0s ... 2026-03-27 06:57:54 (619 MB/s) - 'sample-256k.bin' saved [262144/262144]A 206 Partial Content response confirms that the server accepted the range request and only sent the missing bytes.
- Check byte-range support before you assume future interruptions can be resumed safely.
$ wget --server-response --spider https://downloads.example.net/files/sample-256k.bin 2>&1 | grep -iE 'HTTP/|Accept-Ranges' HTTP/1.1 200 OK Accept-Ranges: bytes
If the response lacks Accept-Ranges: bytes, wget -c can restart from byte zero and overwrite the partial file instead of appending to it.
- Remove the partial file only after you confirm the source changed or the server does not support ranges.
$ rm -f sample-256k.bin $ wget https://downloads.example.net/files/sample-256k.bin
Deleting the partial file is irreversible, so verify the path and filename before you remove it.
- Verify the finished file and confirm that a second resume attempt becomes a no-op.
$ ls -lh sample-256k.bin -rw-r--r-- 1 user user 256K Mar 27 06:57 sample-256k.bin $ wget -c https://downloads.example.net/files/sample-256k.bin --2026-03-27 07:00:38-- https://downloads.example.net/files/sample-256k.bin Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected. HTTP request sent, awaiting response... 416 Requested Range Not Satisfiable The file is already fully retrieved; nothing to do.Pair the size check with a published checksum when the artifact will be executed or unpacked later.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
