Ruby 2.4.0 リファレンスマニュアル > ライブラリ一覧 > net/ftpライブラリ

library net/ftp

要約

FTP プロトコルを扱うライブラリです。

基本的には unix の ftp コマンドのような command-line interface の FTP クライアントを使ったことのある 人にとってわかりやすいインターフェースになっています。 より「Ruby 的」であるインターフェースも用意しています。

FTP については [RFC959][RFC3659] を参考にしてください。

バイナリモードとテキストモード

FTP のデータ転送にはテキストモードとバイナリモード があります。テキストモードで転送する場合には 改行を適宜CRLFに変換します。バイナリモードの場合は 一切の変換をしません。

通常はバイナリモード以外を使う必要はないでしょう。

Net::FTP#getNet::FTP#putNet::FTP#binary の値に従ってテキストモードと バイナリモードの一方を選びます。また、 Net::FTP#getbinaryfileNet::FTP#putbinaryfileNet::FTP#binary の値によらずバイナリモードで、 Net::FTP#gettextfileNet::FTP#puttextfileNet::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#mlsdNet::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) を表す例外クラスです。