Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > net/ftpライブラリ
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) を表す例外クラスです。 |