wgetを使ってFTP経由で大量のファイルをダウンロードする

先日、用向きがあってFTP経由でしかアクセスできないサーバのファイルを大量に落としてこなくてはいけなくなりました。で、普通のFTPクライアントからやっていると接続がブチブチ切れたり、面倒だったりしたので色々調べたところ、使い慣れたwgetFTPに対応していることを思い出して実行した見たのが以下。

コマンド例

wget -mck --passive-ftp ftp://[FTPアカウント]:[FTPパスワード]@[FTPサーバ]/[対象ディレクトリ]
<<

オプション

wgetのそれぞれのオプションの意味は以下

-m
: ミラーリングをする

-c
: 一部取得済みファイルの継続処理

-k
: 取得したファイル内の絶対指定のリンクを相対指定に書き換えます

--passive-ftp
: FTPでpassive接続する

seh. http://members.at.infoseek.co.jp/futora/wget153/option.html

また、当たり前の如く他のwgetのオプションと組み合わせて使えるらしく、たとえば以下のようなものも使えるようです。組み合わせ次第ではかなり柔軟な取得が可能になるかもしれません。
-A
: 指定した拡張子のファイルのみをダウンロード

-R
: 指定した拡張子のファイルをダウンロードの対象が意図する

-I
: 指定したディレクトリのファイルのみをダウンロード

-X
: 指定したディレクトリをダウンロードの対象外とする

cURLという話

wgetに行きつく前にcURLを教えてもらったのですが、ディレクトリを再帰的にダウンロードする方法がよくわからなかったので、使い慣れたwgetに逃げてしまいました。

今回はダウンロードのみが目的だったのでwgetでも十分用を足してくれたのですが、アップロードしようとする場合にはcURLを使うことになると思います。wgetじゃアップロードはできませんし。