2011年08月22日

wget: リダイレクトされたファイル名で保存する

-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-names

If 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.

個人的には、常に以前のモードで動いてくれたほうが都合がいいので、 ~/.wgetrctrust-server-names = on を追加した。これで、毎回リネームしなくても済む。

タグ:ubuntu Linux
posted by katekim at 16:02| Comment(0) | *nix | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。