-O オプションを指定しないと、wget はダウンロードしたデータを保存するファイルの名前をダウンロードした URI から求めるのだが、 Ubuntu 版 wget だとその求めかたが違うようだ。異なるのはリダイレクトされた場合の挙動で、だいたい次のようになっている。
Ubuntu 以外:
% wget 'http://www.example.com/aaa/bbb/ccc.txt Redirect: http://www.example.com/aaa/bbb/ddd.txt -> ddd.txt
Ubuntu 版:
% wget 'http://www.example.com/aaa/bbb/ccc.txt Redirect: http://www.example.com/aaa/bbb/ddd.txt -> ccc.txt
このように、途中でリダイレクトされても、初めに指定した URI を元にファイル名が決められるように修正されたらしい(セキュリティ向上のため)。まあ、普通はこれで問題ないのだが、 SourceForge.net などからファイルをダウンロードする時には厄介なことになる。 SourceForge.net のダウンロード URI は、リファラ(?)とかタイムスタンプとかミラーサイト情報を含んでいるので、とても長い。最終的には、通常のファイル名が含まれた、短い URI にリダイレクトされるのだが、「初めに指定した URI からファイル名を決めるモード」だと、ダウンロードしたファイル名がこんなことになったりする。
squirrel-sql-3.2.1-install.jar?r=http:%2F%2Fwww.squirrelsql.org%2F& ts=1313994610&use_mirror=cdnetworks-kr-1
なんとか前のモードに戻せないかと man を見ていたら、 --trust-server-names というオプションが追加されていた。
--trust-server-namesIf this is set to on, on a redirect the last component of the redirection URL will be used as the local file name. By default it is used the last component in the original URL.
個人的には、常に以前のモードで動いてくれたほうが都合がいいので、 ~/.wgetrc に trust-server-names = on を追加した。これで、毎回リネームしなくても済む。