Posts fastget - ultra fast download files over HTTP(S)
Post
Cancel

fastget - ultra fast download files over HTTP(S)

fastget is an open source CLI tool as well as Go library to ultra fast download files over HTTP(S).

DISCLAIMER: FastGet performance heavily reliant on the network and CPU performance of the client machine. More importantly HTTP(s) endpoint must allow partial requests presenting Accept-Ranges and accepting Range headers.

Features

  • Concurrent download of files over HTTP(S) if server supports Accept-Ranges. Otherwise, fallback to single thread download.
  • Increase no. of concurrent workers to speed up download. Use flag --workers.
  • Add curl like custom headers to authentifacte HTTP(S) requests. Use flag --header.
  • Specify output file to write downloads. Default to file name of URL.

Repo: https://github.com/pgollangi/fastget

  • Star if you find this tool useful.
  • Open an Issue if you come accross any problem using tool.
  • Submit a PR if you would like an improvement

Usage

fastget available as Commnad-Line tool and Go library.

Commnad-Line

1
fastget [options] <URL_TO_DOWNLOAD>

Examples

1
2
3
4
5
6
$ fastget http://speedtest.tele2.net/10MB.zip
Download started..
3.50 MB / 3.50 MB 100 % [====================================================| 0s ] 267.59 KB/s
3.50 MB / 3.50 MB 100 % [====================================================| 0s ] 165.65 KB/s
3.50 MB / 3.50 MB 100 % [====================================================| 0s ] 116.10 KB/s
Download finished in 3s. File: E:\10MB.zip

For more information on CLI usage, please refer dev.pgollangi.com/fastget.

Go Library

Here is a simple example that finds fastest hosts:

1
2
3
4
5
6
7
8
9
10
11
12
fg, err := fastget.NewFastGetter("http://speedtest.tele2.net/10MB.zip")
if err != nil {
    panic(err)
}

result, err := fg.Get()
if err != nil {
    panic(err)
}
file := result.OutputFile
elapsedTime := result.ElapsedTime

For more information on library usage, please refer API documentation on pkg.go.dev

Installation

Scoop

1
2
$ scoop bucket add pgollangi-bucket https://github.com/pgollangi/scoop-bucket.git
$ scoop install fastget

Updating:

1
$ scoop update fastget

Homebrew

1
$ brew install pgollangi/tap/fastget

Updating:

1
$ brew upgrade fastget

Go

1
2
$ go get github.com/pgollangi/fastget/cmd/fastget
$ fastget

Manual

  1. Download and install binary from the latest release.
  2. Recommended: add fastget executable to your $PATH.

Building from source

fastget CLI is written in the Go programming language, so to build the CLI yourself, you first need to have Go installed and configured on your machine.

Install Go

To download and install Go, please refer to the Go documentation. Please download Go 1.14.x or above.

Clone this repository

1
2
$ git clone https://gitlab.com/pgollangi/fastget.git
$ cd fastget

Build

1
2
$ go build cmd/fastget/main.go
$ fastget
This post is licensed under CC BY 4.0 by the author.