FTPおよびHTTPダウンロードを高速化するためのダウンロードアクセラレータとして「Axel」を使用する方法


いくつかのLinuxディストリビューションをダウンロードして試してみるのが好きな人なら、話をして歩き回るダウンロードアクセラレータを両手を広げて歓迎すると確信しています。

このガイドでは、依存関係のない軽量のwgetクローンであるAxelを紹介します(gccとmakeutilsを除く)。

その説明には、バイトクリティカルなシステムに特に適していると記載されていますが、axelはどこにでもインストールでき、HTTP/FTPリンクを介して複数のファイルを同時にダウンロードするだけでなく、それらを高速化するためにも使用できます。

Linux用のコマンドラインダウンロードアクセラレータであるAxelのインストール

先に述べたように、アクセルは単なるダウンロードツールではありません。複数の接続を使用して宛先からファイルを取得することにより、HTTPおよびFTPのダウンロードを高速化します。また、複数のミラーを使用するように構成することもできます。

これだけでは試してみる気になれなかった場合は、axelが、一定時間後に応答しない、またはデータを返さない接続の自動中止と再開をサポートしていることを追加しましょう。

さらに、許可がある場合は、axelを利用して、サーバーへの複数の同時FTP接続を開き、接続ごとに割り当てられた帯域幅を増やすことができます。

これを行うことが許可されていない場合、またはそれについて確信が持てない場合は、代わりに複数の接続を開いて別々のサーバーに接続し、それらすべてから同時にダウンロードすることができます。

最後になりましたが、axelは他のLinuxダウンロードアクセラレータとは異なり、データを別々のファイルに書き込んで後の段階で結合するのではなく、ダウンロード時にすべてのデータを1つのファイルに入れます。

CentOS/RHEL 7では、axelをインストールするには、EPELリポジトリを有効にする必要があります。

# yum install epel-release
# yum install axel

Fedoraでは、デフォルトのリポジトリから利用できます。

# yum install axel   
# dnf install axel   [On Fedora 23+ releases]

Debian JessieおよびUbuntuやLinuxMintなどの派生物では、aptitudeを使用してaxelを直接インストールできます。

# aptitude install axel

アクセルを取り付けたら、両足で飛び込みましょう。

Axelの構成–Linuxダウンロードアクセラレータ

/ etc/axelrcを使用してaxelを構成し、それを呼び出すときにコマンドラインでさらに必要なオプションを渡すことができます。構成ファイルは十分に文書化されていますが、ここで最も有用なオプションを確認します。

reconnect_delay は、axelがサーバーへの新しい接続の開始を再試行する前に待機する秒数です。

max_speed は一目瞭然です。値はバイト/秒(B/s)で示されます。使用可能な帯域幅を考慮した後、この変数を適切な値に設定することをお勧めします。これにより、ダウンロード中にaxelが帯域幅を大量に消費するのを防ぐことができます。

重要:実際の最大ダウンロード速度はインターネット接続によって異なることに注意してください。インターネット接続が1.22 MB/sに達した場合、 max_speed を5MB/sに設定しても何も起こらないことは言うまでもありません。 s(私の場合のように、以下の例でわかるように、要点を説明するためにその値を残しました)。

num_connections は、axelが開始を試みる接続の最大数です。推奨値(4)はほとんどの場合に十分であり、主に他のFTPユーザーを尊重するという理由で与えられます。サーバーによっては、複数の接続を許可しない場合があることに注意してください。

connection_timeout は、axelが応答の受信を待機してから、中止して自動的に再開するまでの秒数を示します。

http_proxy を使用すると、HTTP_PROXY環境変数がシステム全体で設定されていない場合にプロキシサーバーを設定できます。この変数は、HTTP_PROXY(http://:PORT)と同じ形式を使用します。

no_proxy は、コンマで区切られたローカルドメインのリストであり、axelはプロキシを介して到達しようとしてはなりません。この設定はオプションです。

buffer_size は、現在のすべての接続から一度に読み取る最大量をバイト単位で表します。

verbose では、ダウンロード関連のメッセージを画面に表示するかどうかを選択できます。無効にする場合は0に設定し、メッセージを引き続き表示する場合は1に設定します。

interfaces を使用すると、インターネットにアクセスできるネットワークインターフェースを複数リストできます(複数ある場合)。これが明示的に設定されていない場合、axelはルーティングテーブルの最初のインターフェイスを使用します。

同様の構成オプションは、次の場所から入手できます。

# axel --help

注意深く見ると、ほとんどのコマンドラインオプションが構成ファイルのオプションに似ていることがわかります。さらに、 -o (– output)オプションを使用すると、出力ファイル名を指定できます。

使用すると、ソースファイル名が上書きされます。コマンドラインオプションのいずれかを設定すると、構成ファイルで設定されたオプションが上書きされます。

Axelコマンドラインダウンロードアクセラレータの使用方法

構成ファイルから次の設定を使用します(対応する行のコメントを解除します)。

reconnect_delay = 20
max_speed = 500000
num_connections = 4
connection_timeout = 30
buffer_size = 10240
verbose = 1

ここで、wgetとaxelを使用してHTTPリンクとFTPリンクからのダウンロード時間を比較します。任意のサイズの任意のファイルを選択できますが、簡単にするために、以下から入手可能な100MBのファイルをダウンロードします。

  1. ftp://speedtest:[email protected]/test100Mb.db
  2. http://speedtest.ftp.otenet.gr/files/test100Mb.db
# wget ftp://speedtest:[email protected]/test100Mb.db
# axel -n 10 --output=axel-test100Mb.db ftp://speedtest:[email protected]/test100Mb.db
# wget http://speedtest.ftp.otenet.gr/files/test100Mb.db
# axel -n 10 --output=axel-test100Mb.db http://speedtest.ftp.otenet.gr/files/test100Mb.db

上記で実行したテストの結果からわかるように、axelはFTPまたはHTTPのダウンロードを大幅に高速化できます。

概要

この記事では、FTP/HTTPダウンロードアクセラレータであるaxelの使用方法を説明し、リモートサーバーへの複数の同時接続を開くことができるため、wgetなどの他のプログラムよりも高速に実行されることを示しました。

ここで示したことが、アクセルを試す動機付けになることを願っています。この記事についてご質問やご意見がございましたら、以下のフォームからお気軽にお問い合わせください。読者の皆様からのフィードバックをお待ちしております。