A CLI file downloader with parallel downloading, resume support, and batch mode.
cargo install dwrsgit clone https://github.com/bircoder432/dwrs.git
cd dwrs
cargo build --releaseBinary:
target/release/dwrs
dwrs https://example.com/file.isoMultiple files:
dwrs url1 url2 url3Output is specified per file using repeated -o flags:
dwrs url1 url2 -o out1 -o out2Each -o corresponds to the URL at the same position.
If outputs are omitted, filenames are derived from URLs.
Format:
https://example.com/file1.zip output1.zip
https://example.com/file2.zip
# comments supported
Run:
dwrs --file urls.txtdwrs https://example.com/file.zip --continuedwrs https://example.com/file.iso --background-w, --workers <N> Parallel chunks per file (default: 4)
-o, --output <FILE> Output filename (repeatable per URL)
-r, --retries <N> Retry attempts (default: 3)
--buffer-size <KB> Write buffer size in KB
--pool-size <N> HTTP connection pool size (default: 100)
--max-files <N> Max concurrent file downloads
--min-parallel-size <MB> Minimum size for parallel download
-c, --continue Resume interrupted downloads
-f, --file <PATH> Input file with URL list
--config <PATH> Custom config file
--background Run in background
Default path:
~/.config/dwrs/config.toml
workers = 8
buffer_size = 262144
pool_size = 100
retries = 3
min_parallel_size = 5242880
msg_template = "→ {output}"
template = "{spinner:.green} [{elapsed_precise}] {bar:40.cyan/blue} ({percent}%) {msg}"
bar_chars = "█▌░"- Uses HTTP Range requests
- Splits into chunks
- Downloads concurrently
- Merges final file
- Falls back to single-thread if unsupported
- Works for both sequential and parallel modes
- Requires server support for Range
-ois positional by repetition, not a list- URL → output mapping is index-based
- Parallel mode depends on server
Accept-Ranges
Apache-2.0