Metalinkを活用した手間知らずのダウンロード

人気の高いソフトウェアをインターネット経由で入手しようとすると、時に非常に手間取ることがあるが、それはミラーサイトやBitTorrentを利用した場合でも同様である。例えば先月FedoraプロジェクトがFedora Core 6をリリースしたが、その際には多数のミラーサイトが用意されていたにもかかわらず膨大なアクセス数をさばききれず、またシーダの不足が原因となってトレントが停滞するという事態が生じていた。ところがMetalinkを利用できた私は、自分は熟睡しながら自動作業でFC6のISOをまとめてダウンロードさせるという贅沢に浸ることができたのである。

Metalinkとはオープン標準の1つだが、その目的はダウンロード作業を簡単化、高速化、高信頼化させることにあり、やや大げさに言えば、個々のユーザが確保した通信帯域を最後の1ビットまで利用し尽くすことを目指している。ところで、Metalinkのことをありふれたダウンロードアクセラレータの類と同じだと思ったら、それは大間違いだ。これは様々なダウンロードクライアントを統括して運用する一種のフレームワークとして機能するものであり、古くから使われているHTTPやFTP方式を始めBitTorrentを用いたファイルのダウンロードにも対応している。

Metalink標準では、従来の固定化された情報しか提供できないURLを.metalinkファイルで置き換えているが、その実体は単純なXMLファイルにすぎない。このファイルには、ダウンロード対象のアプリケーションを収めている全てのミラーサイトが登録される。またMetalinkのサポートする通信方式には、HTTPおよびFTPミラーやrsyncが含まれているが、その他にも、BitTorrent、ed2kmagnet linksなど一部のP2P方式にも対応している。一例としてOpenOffice.org metalink を見てみると、その中には50以上のHTTPとFTPサーバおよび1つのトレントがリンクされていることが分かるはずだ。

ここで従来型のハイパーリンクを使用したOpenOffice.orgのダウンロード途中でサーバがダウンしたとしよう。手元に残された未完の転送ファイルについてはダウンロード操作を途中から続行できるかもしれないが、使用するダウンロードクライアントによっては不可能かもしれない。それに対してMetalinkを用いた場合は、仮に1つのサーバがダウンしても他のミラーへの切り換えがクライアントソフトウェアにより自動的に行われ、転送途中で中断されていたファイルのダウンロードがそのまま続行されるのだ。つまりこの機能は、リストアップされたすべてのサーバがダウンしない限り目的のファイルが入手不可能になることは無いという意味において、ダウンロード処理の信頼性も高めてくれる。

metalinkを介して取得したファイルについては、自動的にダウンロード後の検証が行われる。そのためにMetalinkでは、MD5SUMとSHA1SUMのチェックサムおよびPGP署名の検証機能をサポートしているが、これらの情報を格納しているのが.metalinkファイルだ。なおここで言うチェックサムとは、個々のファイルを識別するための指紋のようなものである。転送中にエラーが生じた場合、あるいは第三者が意図的に悪意あるファイルとすり替えたような場合、そのチェックサム情報は正しい値を示さなくなる。こうした現象が何かのファイルで生じた場合、通常であれば、接続先のミラーを変更するなどして当該ファイルのコピーを新たにダウンロードし直さなければならない。ところがMetalinkを用いた場合、ダウンロードするファイルがトレントに対応していれば、トレントの分割ファイルの利用ないしチェックサムを用いたダウンロード結果の検証が自動的に行われるのだ。その結果、ダウンロードした全体のごく一部だけにエラーが生じていたのであれば、当該ファイルの全体ではなく、必要な部分だけをMetalinkが再ダウンロードしてくれる。

metalinkファイルの作成法

Metalinkを用いたファイルのダウンロードを行うためには、あらかじめソフトウェアの提供側が.metalinkファイルを作成し、XMLファイル形式でダウンロードサイトを一覧してそれぞれの優先順位を指定しておく必要がある。こうしたファイルの作成は手作業でもこなせる程度の単純なものだが、Metalink Creatorを利用すれば、そうした処理をオンライン上で自動処理させることも可能だ。後者の場合、必要な情報を入力するだけで独自のmetalinkを簡単に作成することができる。

こうしたオンラインツール以外にも、Metalinkのサイトにアクセスすれば、同様の処理が行えるクロスプラットフォーム対応のアプリケーションやPerlスクリプトがいくつか用意されている。

ソフトウェアの提供側は.metalinkファイルの作成後、WebサーバにMIMEタイプを設定する必要があるが(”application/metalink+xml”)、この情報はユーザがダウンロードクライアントを用いてmetalinkを開く際に参照される。この情報を設定しなかった場合、ユーザ側がMetalink URLをクリックするとクライアント画面上でこの.metalinkファイルはテキストとして表示されるが、metalinkのURLを指定すればMetalinkクライアントは所定の動作を行ってくれるはずだ。

個々のダウンロードサイトに対しては、ソフトウェアの提供側が優先順位を指定することができる。トレントの優先順位を高めておく(あるいは最大化しておく)と帯域幅を節約できるが、仮にそうした設定下ですべてのシードが利用できなくなった場合でも、自動的にFTP/HTTPへの切り換えが行われるので、それだけでデータ転送が不可能になることはない。