最適サイト

cygwinには多くのミラーサイトがあります。どれを選んだらいいのか迷うので、最適なサイトを検索するため、サイトからの転送速度を測定するスクリプトを書きました。

#!/bin/perl -w
$mirrors_lst_url = "http://cygwin.com/mirrors.lst";
$mirrors_lst_filename = "mirrors.lst";

$null = "nul";

system("wget $mirrors_lst_url");
open MIRRORS_LST, $mirrors_lst_filename;

while(<MIRRORS_LST>)
{
    /^.*\/\/([^\/]+)/;
    $sites{$1} = 1;
}

unlink $mirrors_lst_filename;

foreach $site (keys(%sites))
{
    open WGET, "wget -t 1 -T 1 -O $null $site 2>&1 | ";
    while (<WGET>)
    {
        if (/saved/)
        {
            /\((.*)\)/;
            print "$1\t$site\n";
            last;
        }
    }
}

出力結果(一部)

7.44 MB/s       sourceware.mirrors.tds.net
82.76 MB/s      cygwin.elite-systems.org
30.61 KB/s      mirror.cps.cmich.edu
15.68 KB/s      ftp.gtlib.gatech.edu

で、これをsort -n -r とかすると、最速サイトが解るワケです。MBとKBが混在するので、grep MB とかするとより解りやすいでしょう。
こーゆーのって、無駄なトラフィックを増やす気もするのですが、無駄なトラフィックを減らすためのものですので…。