Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Code-Hex/pget

The fastest, resumable file download client
https://github.com/Code-Hex/pget

concurrency download downloader fast go golang http parallel pget resume

Last synced: about 1 month ago
JSON representation

The fastest, resumable file download client

Awesome Lists containing this project

README

        

Pget - The fastest file download client
=======

[![.github/workflows/main.yaml](https://github.com/Code-Hex/pget/actions/workflows/main.yaml/badge.svg)](https://github.com/Code-Hex/pget/actions/workflows/main.yaml)
[![codecov](https://codecov.io/gh/Code-Hex/pget/branch/master/graph/badge.svg?token=jUVGnY7ZlG)](undefined)
[![Go Report Card](https://goreportcard.com/badge/github.com/Code-Hex/pget)](https://goreportcard.com/report/github.com/Code-Hex/pget)
[![GitHub release](https://img.shields.io/github/release/Code-Hex/pget.svg)](https://github.com/Code-Hex/pget)
[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)

**Ad**: I'm currently developing a new date and time library [synchro](https://github.com/Code-Hex/synchro) for the modern era. please give it ⭐!!

## Description

Multi-Connection Download using parallel requests.

- Fast
- Resumable
- Cross-compiled (windows, linux, macOS)

This is an example to download [linux kernel](https://www.kernel.org/). It will be finished between 15s.

![pget](https://user-images.githubusercontent.com/6500104/147878414-321c57ad-cff2-40f3-b2a4-12c30ff1363f.gif)

## Disclaimer

This program comes with no warranty. You must use this program at your own risk.

### Note

- Using a large number of connections to a single URL can lead to DOS attacks.
- The case is increasing that if you use multiple connections to 1 URL does not increase the download speed with the spread of CDNs.
- I recommend to use multiple mirrors simultaneously for faster downloads (And the number of connections is 1 for each).

## Installation

### Homebrew

$ brew install pget

### Go

$ go install github.com/Code-Hex/pget/cmd/pget@latest

## Synopsis

This example will be used 2 connections per URL.

$ pget -p 2 MIRROR1 MIRROR2 MIRROR3

If you have created such as this file

cat list.txt
MIRROR1
MIRROR2
MIRROR3

You can do this

cat list.txt | pget -p 2

## Options

```
Options:
-h, --help print usage and exit
-p, --procs the number of connections for a single URL (default 1)
-o, --output output file to
-t, --timeout timeout of checking request in seconds
-u, --user-agent identify as
-r, --referer identify as
--check-update check if there is update available
--trace display detail error messages
```

## Pget vs Wget

URL: https://mirror.internet.asn.au/pub/ubuntu/releases/21.10/ubuntu-21.10-desktop-amd64.iso

Using
```
time wget https://mirror.internet.asn.au/pub/ubuntu/releases/21.10/ubuntu-21.10-desktop-amd64.iso
time pget -p 6 https://mirror.internet.asn.au/pub/ubuntu/releases/21.10/ubuntu-21.10-desktop-amd64.iso
```
Results

```
wget 3.92s user 23.52s system 3% cpu 13:35.24 total
pget -p 6 10.54s user 34.52s system 25% cpu 2:56.93 total
```

`wget` 13:35.24 total, `pget -p 6` **2:56.93 total (6x faster)**

## Binary

You can download from [here](https://github.com/Code-Hex/pget/releases)

## Author

[codehex](https://twitter.com/CodeHex)