dlm a minimal download manager

Downloads a list of URLs concurrently. Resumes interrupted downloads and retries failed ones.

macOS · Linux

curl -fsSL https://agourlay.github.io/dlm/install.sh | sh

Installs to ~/.local/bin · Read the script

Windows (PowerShell)

irm https://raw.githubusercontent.com/agourlay/dlm/master/site/install.ps1 | iex

Installs to %LOCALAPPDATA%\Programs and adds it to your PATH · Read the script

Or with Rust: cargo install dlm · download a release

A terminal running dlm -i links.txt -m 3 on five GNU source tarballs: one is skipped as already downloaded, one resumes from a part file, three progress bars advance with live speed and ETA, and the run ends with Finished in 18s - 4 completed, 1 skipped, 0 failed

Concurrent

Reads URLs from a file, one per line; blank lines and # comments are ignored. Downloads up to -m at once (2 by default), each with its own progress bar.

Resumable

Writes to a .part file until a download completes, and continues from there on the next run using HTTP range requests. Connection errors, timeouts, 429 and 5xx are retried with backoff, 10 times by default.

Scriptable

Skips files already in the output directory. Ends every run with a summary of completed, skipped and failed downloads, and exits with 1 if any failed.

Usage

# a single file
$ dlm https://example.com/file.iso

# a list of URLs, 4 at a time, into a directory
$ dlm -i links.txt -m 4 -o ~/downloads

# with a header, basic auth or a proxy
$ dlm -i links.txt -H 'Authorization: Bearer <token>'
$ dlm -i links.txt --user alice:secret
$ dlm -i links.txt --proxy http://proxy:3128

# all options
$ dlm --help

Details