要約
FTP プロトコルを扱うライブラリです。
基本的には unix の ftp コマンドのような command-line interface の FTP クライアントを使ったことのある人にとってわかりやすいインターフェースになっています。より「Ruby 的」であるインターフェースも用意しています。
FTP については [RFC959]、[RFC3659] を参考にしてください。
バイナリモードとテキストモード
FTP のデータ転送にはテキストモードとバイナリモードがあります。テキストモードで転送する場合には改行を適宜CRLFに変換します。バイナリモードの場合は一切の変換をしません。
通常はバイナリモード以外を使う必要はないでしょう。
Net::FTP#get、Net::FTP#put は Net::FTP#binary の値に従ってテキストモードとバイナリモードの一方を選びます。また、 Net::FTP#getbinaryfile、Net::FTP#putbinaryfile は Net::FTP#binary の値によらずバイナリモードで、 Net::FTP#gettextfile、Net::FTP#puttextfile は Net::FTP#binary の値によらずテキストモードでデータ転送が行われます。
パッシブモードとアクティブモード
FTP はファイル転送やディレクトリ情報取得のためのデータ転送用の TCP コネクションを、サーバとの制御コマンドをやりとりするためのコネクションとは別に作成します。
このデータ転送用コネクションを作成する際に、アクティブモードではサーバ側からクライアント側へコネクションを作り、パッシブモードではクライアント側からサーバ側へコネクションを作ます。
そのため、アクティブモードではサーバ-クライアント間にファイアーウォールや NAT がある場合にはうまく接続できない場合があります。この時にはパッシブモードを利用してください。
デフォルトモードは Net::FTP.default_passive= で指定することができます。パッシブモードがデフォルトです。
例
例1:
require 'net/ftp' ftp = Net::FTP.new('ftp.example.org') ftp.login ftp.passive = true ftp.chdir('pub/ruby') files = ftp.list('ruby*') ftp.getbinaryfile('ruby-1.9.1-p243.tar.bz2', 'ruby.bz2', 1024) ftp.close
例2:
require 'net/ftp' Net::FTP.open('ftp.example.org') do |ftp| ftp.login ftp.passive = true ftp.chdir('pub/ruby') files = ftp.list('*.bz2') ftp.getbinaryfile('ruby-1.9.1-p243.tar.bz2', 'ruby.bz2', 1024) end
クラス
Net::FTP | FTP を実装したクラスです。 |
Net::FTP::MLSxEntry | Net::FTP#mlsd、Net::FTP#mlst の結果を保持するクラスです。 |
例外クラス
Net::FTPError | net/ftp ライブラリ関連のエラー全般を表す例外クラスです。 |
Net::FTPConnectionError | コネクションを確立する前に通信しようとした場合に発生する例外のクラスです。 |
Net::FTPPermError | FTP の応答コード 5yz (Permanent Negative Completion reply) を表す例外クラスです。 |
Net::FTPProtoError | サーバの応答が FTP のプロトコルに沿っていない場合に発生する例外のクラスです。 |
Net::FTPReplyError | FTPの応答が 1yz や 3yz であり、それが想定外であることを表わす例外クラスです。 |
Net::FTPTempError | FTP の応答コード 4yz (Transient Negative Completion reply) を表す例外クラスです。 |