記事

Goで作られた爆速ダウンローダー pget を試す

一般的にCUIでダウンロードするコマンドっていうと「curl」か「wget」だが、いかんせん遅い。というのも分割ダウンロードに対応できてないからである。

以前にaxelコマンドという爆速ダウンローダーで記事書いたけど、それに迫る、凌ぐほどの爆速ダウンロード可能なツールがあったのでメモ

環境

  • go言語が動く環境
  • ubuntuの場合は sudo apt install golang-go でOK

インストー

ココからバイナリファイルをダウンロードできる

Ubuntuとかの場合は「pget_linux_amd64.tar.gz」、Macの場合は「pget_darwin_amd64.zip」を選択。

以下、Ubuntuの場合

wget https://github.com/Code-Hex/pget/releases/download/0.0.6/pget_linux_amd64.tar.gz
tar xzfv pget_linux_amd64.tar.gz 
sudo mv pget_linux_amd64/pget /usr/local/bin/

使い方

$ pget 
Pget v0.0.6, parallel file download client
Usage: pget [options] URL
  Options:
  -h,  --help                   print usage and exit
  -v,  --version                display the version of pget and exit
  -p,  --procs <num>            split ratio to download file
  -o,  --output <filename>      output file to <filename>
  -d,  --target-dir <path>        path to the directory to save the downloaded file, filename will be taken from url
  -t,  --timeout <seconds>      timeout of checking request in seconds
  -u,  --user-agent <agent>     identify as <agent>
  -r,  --referer <referer>      identify as <referer>
  --check-update                check if there is update available
  --trace                       display detail error messages

見たまんまではあるが、例えばUbuntuOSのisoファイルを10分割でダウンロードしたい場合は

pget -p 10 http://cdimage.ubuntulinux.jp/releases/16.04/ubuntu-ja-16.04-desktop-amd64.iso

すると

$ pget -p 10 http://cdimage.ubuntulinux.jp/releases/16.04/ubuntu-ja-16.04-desktop-amd64.iso
Checking now http://cdimage.ubuntulinux.jp/releases/16.04/ubuntu-ja-16.04-desktop-amd64.iso
Download start from http://cdimage.ubuntulinux.jp/releases/16.04/ubuntu-ja-16.04-desktop-amd64.iso
 1388429312 / 1388429312 [============================================================================================================================================] 100.00% 30s

binding with files...
 1388429312 / 1388429312 [=============================================================================================================================================] 100.00% 1s
Complete

でダウンロードできる。マジ快適

ただし、サーバー側がAccept-Rangesに対応している必要があって、未対応(というかレジューム非対応)のサーバーに対してリクエストするとエラーを返す

pget -p 10 https://dumps.wikimedia.org/jawiki/20170701/jawiki-20^C0701-pages-articles-multistream.xml.bz2
Checking now https://dumps.wikimedia.org/jawiki/20170701/jawiki-20^C0701-pages-articles-multistream.xml.bz2
Error:
  not supported range access: https://dumps.wikimedia.org/jawiki/20170701/jawiki-20^C0701-pages-articles-multistream.xml.bz2