https://github.com/agourlay/dlm
Minimal HTTP download manager
https://github.com/agourlay/dlm
cli download-manager http
Last synced: 17 days ago
JSON representation
Minimal HTTP download manager
- Host: GitHub
- URL: https://github.com/agourlay/dlm
- Owner: agourlay
- License: apache-2.0
- Created: 2019-11-26T18:31:30.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-04-26T21:01:24.000Z (almost 2 years ago)
- Last Synced: 2024-05-01T19:37:51.237Z (almost 2 years ago)
- Topics: cli, download-manager, http
- Language: Rust
- Homepage:
- Size: 807 KB
- Stars: 56
- Watchers: 3
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dlm
[](https://github.com/agourlay/dlm/actions/workflows/ci.yml)
[](https://crates.io/crates/dlm)
A minimal HTTP download manager that works just fine.
## Features
- read URLs from a text file
- control maximum number of concurrent downloads
- resume interrupted downloads if possible (using HTTP range)
- automatically retry re-establishing download in case of timeout or hanging connection
- multi progress bars (made with [indicatif](https://github.com/mitsuhiko/indicatif))
- native support for proxies and redirects
### Input file format
- one URL per line
- empty lines are ignored
- lines starting with `#` are ignored as comment
## Usage
```
./dlm --help
Minimal download manager
Usage: dlm [OPTIONS] [URL]
Arguments:
[URL] Direct URL to download
Options:
-m, --max-concurrent
Maximum number of concurrent downloads [default: 2]
-i, --input-file
Input file with links
-o, --output-dir
Output directory for downloads [default: .]
-u, --user-agent
User-Agent header to use
--random-user-agent
Use a random User-Agent header
--proxy
HTTP proxy to use
-r, --retry
Number of retries on network error [default: 10]
--connection-timeout
Connection timeout in seconds [default: 10]
-a, --accept
Accept header value
--accept-invalid-certs
Accept invalid TLS certificates
-h, --help
Print help
-V, --version
Print version
```
## Examples
- Download single file
```bash
./dlm https://storage.com/my-file.zip
```
- Download several files into current directory
```bash
./dlm --input-file ~/dlm/links.txt
```
- With output directory and max concurrent download control
```bash
./dlm --input-file ~/dlm/links.txt --output-dir ~/dlm/output --max-concurrent 2
```
## Installation
### Releases
Using the provided binaries in https://github.com/agourlay/dlm/releases
### Crates.io
Using Cargo via [crates.io](https://crates.io/crates/dlm).
```bash
cargo install dlm
```